课程导入:学习目标、适用人群、课程结构与环境准备

边缘计算与人工智能的融合正在重塑物联网、智能制造、智慧城市等领域的部署范式。当模型训练完成之后,如何将推理服务高效、稳定、安全地运行在资源受限的边缘设备上,成为工程落地的核心挑战。容器化技术(Docker)与容器编排平台(Kubernetes)为这一问题提供了标准化的解决方案。本章作为整个课程的开篇,将明确学习路径、界定适用人群、拆解课程结构,并带领你完成从零开始的环境搭建——包括 Docker 安装、Kubernetes 单机集群初始化以及边缘设备的模拟方案。无论你是算法工程师希望补齐工程化能力,还是运维开发人员希望切入 AI 推理领域,本章都将为你建立清晰的全局视图。

Edge AI 容器化部署与推理服务课程全景图 基础环境层 Docker 容器运行时 Kubernetes 编排平台 边缘设备模拟(QEMU/容器) —— 本章重点 —— 核心能力层 模型转换与优化(ONNX/TensorRT) 推理服务封装(Triton/OpenVINO) 容器镜像构建与私有仓库 —— 第2-15章 —— 生产应用层 K8s 部署与弹性伸缩 监控与日志采集 安全与OTA升级 —— 第16-30章 —— 学习路径:环境搭建 → 镜像构建 → 服务封装 → 编排部署 → 生产运维 每章包含:核心原理 + 操作流程 + 案例拆解 + 常见误区 30 章节 系统化进阶 从入门到生产 15+ 实战案例 真实边缘场景 完整闭环拆解 5 大工具链 Docker / K8s / Triton Prometheus / Grafana 3 类边缘设备 ARM / x86 / GPU 模拟与真实结合

1.1 学习目标:从“能跑通”到“会优化”

本课程的核心目标不是简单地教会你执行几条 docker run 命令,而是帮助你建立一套完整的 Edge AI 推理服务工程化思维。完成全部章节后,你将具备以下能力:

  • 环境构建能力:独立完成 Docker 与 Kubernetes 环境的搭建,理解容器网络、存储卷、资源限制等核心机制,能够在资源受限的边缘设备上合理配置运行时参数。
  • 模型服务化能力:掌握将训练好的 PyTorch、TensorFlow 或 ONNX 模型封装为高性能推理服务的方法,包括模型格式转换、动态批处理、GPU/CPU 异构调度等关键技术。
  • 编排部署能力:熟练使用 Kubernetes 完成推理服务的部署、滚动更新、自动扩缩容,能够编写健壮的 Deployment、Service、ConfigMap 等资源清单。
  • 生产运维能力:建立监控告警体系,掌握日志采集与分析技巧,能够诊断并解决容器化推理服务中的常见故障(如内存溢出、GPU 显存泄漏、网络延迟抖动等)。

课程目标分层说明:本课程将学习目标划分为三个递进层次——基础层(能够完成环境搭建与单机部署)、进阶层(理解容器编排与弹性伸缩原理)、高级层(具备生产环境调优与故障排查能力)。每一章都会明确标注该章内容所处的层次,方便你根据自身基础调整学习重心。

1.2 适用人群:三类学员的差异化学习路径

考虑到学员背景差异较大,本课程在内容设计上做了分层处理。下表列出了主要适用人群及其对应的学习建议:

学员类型 背景特征 学习重点 建议路径
算法工程师 熟悉模型训练,但对容器化部署接触较少 Docker 镜像构建、模型服务封装、推理优化 第1-15章为主线,第16-30章可选择性学习
运维/DevOps 工程师 熟悉 Linux 与自动化部署,但对 AI 推理链路不熟悉 模型格式转换、推理服务特性、GPU 资源管理 第1-5章快速过,第6-25章重点学习
嵌入式/边缘计算开发者 熟悉硬件与交叉编译,但对云原生技术栈陌生 边缘设备模拟、资源限制、离线部署方案 第1-8章+第20-30章组合学习

无论你属于哪类学员,都需要具备以下前置知识:Linux 基本命令行操作(文件管理、进程查看、网络配置)、Python 编程基础(能够阅读和修改简单脚本)、对机器学习推理的基本概念(如模型输入输出张量、前向传播)有所了解。如果你对 Docker 完全陌生,建议在开始本课程前先花 2-3 天时间熟悉 docker run、docker build、docker-compose 等基础命令。

1.3 课程结构:五阶段递进式设计

整个课程共 30 章,按照工程落地的时间顺序划分为五个阶段。这种设计遵循“先搭建、再封装、后编排、终运维”的递进逻辑,确保每个阶段的知识都能在上一个阶段的基础上自然生长。

  1. 阶段一(第1-5章):环境基石。完成 Docker、Kubernetes 环境搭建,掌握容器镜像构建与私有仓库使用,理解边缘设备模拟方法。本阶段结束后,你应该能够在本地运行一个简单的容器化推理服务。
  2. 阶段二(第6-12章):模型服务化。深入模型转换工具链(ONNX、TensorRT、OpenVINO),学习 Triton Inference Server 的部署与配置,掌握动态批处理、模型集成等高级特性。
  3. 阶段三(第13-18章):Kubernetes 编排实战。从单机部署扩展到集群部署,学习 Deployment、Service、Ingress、HPA 等核心资源对象,掌握滚动更新与回滚策略。
  4. 阶段四(第19-25章):可观测性与稳定性。构建 Prometheus + Grafana 监控体系,实现日志采集与告警通知,学习故障排查方法论与性能调优技巧。
  5. 阶段五(第26-30章):生产落地与案例复盘。涵盖多架构镜像构建、离线部署、安全加固、OTA 升级等生产级话题,最后通过一个完整的智慧零售边缘推理项目串联全部知识点。

学习建议:每章内容都包含“核心原理 → 操作流程 → 案例拆解 → 常见误区”四个固定模块。建议你在学习时先通读原理部分建立框架,再动手操作验证,最后通过案例拆解和误区分析加深理解。不要跳过案例直接看结论,案例中的排障过程往往比最终结果更有价值。

1.4 环境准备:Docker、Kubernetes 与边缘设备模拟

工欲善其事,必先利其器。本节将指导你完成课程所需的全部基础环境搭建。考虑到学员可能使用不同的操作系统,以下步骤以 Ubuntu 22.04 LTS 为例,其他 Linux 发行版或 macOS 操作类似,Windows 用户建议使用 WSL2 或虚拟机。

1.4.1 Docker 安装与验证

Docker 是整个课程的基础运行时。我们使用官方脚本进行安装,确保获取最新稳定版本:

# 更新软件源并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# 添加 Docker 官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 添加 Docker 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 将当前用户加入 docker 组(避免每次使用 sudo)
sudo usermod -aG docker $USER
newgrp docker

# 验证安装
docker --version
docker run hello-world

安装完成后,建议立即配置 Docker 镜像加速器(国内网络环境必需)。编辑 /etc/docker/daemon.json 文件:

{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}

重启 Docker 服务使配置生效:sudo systemctl restart docker。验证加速器是否生效:docker info | grep -A 5 "Registry Mirrors"。

1.4.2 Kubernetes 单机集群搭建

本课程使用 k3s 作为 Kubernetes 发行版,它由 Rancher 维护,专为边缘计算和资源受限场景设计,二进制包仅约 50MB,内存占用远低于完整版 K8s。选择 k3s 的另一个重要原因是它内置了 Traefik Ingress Controller 和本地存储提供者,非常适合教学演示。

# 安装 k3s(使用阿里云镜像加速)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

# 查看节点状态
sudo k3s kubectl get nodes

# 配置 kubectl 访问权限(非 root 用户)
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
export KUBECONFIG=~/.kube/config

# 验证集群可用性
kubectl get pods -A

如果你希望使用完整版 Kubernetes,也可以使用 kubeadm 或 minikube 搭建,但后续章节中的部分命令(如 k3s crictl)需要做相应调整。本课程统一基于 k3s 进行讲解。

1.4.3 边缘设备模拟方案

真实边缘设备(如树莓派、Jetson Nano)价格不菲且采购周期长,因此本课程采用 QEMU 用户态模拟 + Docker 多架构镜像 的方式模拟 ARM 环境。具体方案如下:

  • 方案一:Docker Buildx 多架构构建。使用 docker buildx 创建支持 arm64 的构建器,在 x86 主机上交叉构建 ARM 镜像,并通过 QEMU 模拟运行。
  • 方案二:轻量级 ARM 虚拟机。使用 qemu-system-aarch64 运行一个精简的 ARM64 Ubuntu 虚拟机,在虚拟机内安装 Docker 和 k3s。
  • 方案三:容器化模拟。直接使用 docker run --platform linux/arm64 配合 QEMU 模拟运行 ARM 容器,适合快速验证镜像兼容性。

本课程推荐使用方案一,因为它与生产环境中的多架构镜像发布流程一致。执行以下命令启用 Buildx:

# 创建新的构建器实例
docker buildx create --name edge-builder --driver docker-container --platform linux/amd64,linux/arm64
docker buildx use edge-builder
docker buildx inspect --bootstrap

# 测试构建 ARM64 镜像
docker buildx build --platform linux/arm64 -t test/edge-demo:latest --load .

重要提醒:QEMU 模拟运行 ARM 容器的性能远低于真实硬件,CPU 密集型推理任务在模拟环境中的运行速度可能只有真实设备的 1/10 甚至更低。因此,模拟环境仅用于功能验证和流程学习,性能数据仅供参考。如果条件允许,建议至少准备一块树莓派 4B(4GB 版本)或 Jetson Nano 作为补充实验设备。

1.4.4 环境验证清单

完成上述安装后,请逐项检查以下清单,确保环境完全就绪:

检查项 验证命令 预期结果
Docker 运行正常 docker ps 无报错,显示空列表
Docker 镜像加速生效 docker info Registry Mirrors 包含配置的地址
k3s 集群就绪 kubectl get nodes 节点状态为 Ready
Buildx 多架构构建可用 docker buildx ls edge-builder 状态为 active
QEMU 模拟验证 docker run --rm --platform linux/arm64 alpine uname -m 输出 aarch64

1.5 常见误区与学习建议

在多年教学实践中,我们发现学员在环境准备阶段最容易陷入以下几个误区,这里提前指出以帮助你规避:

  • 误区一:盲目追求最新版本。Docker 和 Kubernetes 的版本迭代速度很快,但新版本往往伴随不稳定的特性。本课程所有示例均在 Docker 24.x + k3s 1.28.x 版本上验证通过,建议你保持相同或相近版本,避免因版本差异导致命令不兼容。
  • 误区二:忽略资源限制配置。边缘设备通常只有 2-4GB 内存,如果在本地开发机上不设置资源限制,容器可能会占用全部可用内存,导致系统卡顿甚至崩溃。建议在 docker run 时始终添加 --memory 和 --cpus 参数。
  • 误区三:混淆 Docker 与 Kubernetes 的职责。Docker 负责单个容器的生命周期管理,而 Kubernetes 负责多容器、多节点的编排调度。很多初学者试图用 Docker Compose 替代 Kubernetes,这在生产环境中是不可行的。
  • 误区四:跳过模拟环境直接上真机。在 ARM 设备上调试容器镜像非常耗时,每次修改都需要重新构建并推送镜像。务必先在 x86 环境用 QEMU 模拟验证,确认无误后再部署到真实设备。

复盘总结:本章作为课程起点,核心任务是建立“环境-工具-流程”的整体认知。完成环境搭建后,建议你花 30 分钟时间运行一个简单的 PyTorch 模型推理容器(例如 torchvision 自带的 ResNet18),体验从镜像拉取到推理输出的完整流程。这个小小的实践将帮助你建立对后续章节内容的直观感知。下一章我们将深入 Docker 镜像构建的细节,学习如何编写高效、安全的 Dockerfile。