06 - AI 机器人初创公司 K8s 落地方案
一、业务场景分析
AI 机器人公司典型技术栈:
┌──────────────────────────────────────────────────────────────────┐
│ AI 机器人业务全景 │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────────┐ │
│ │ 感知层 │ │ 决策层 │ │ 执行层 │ │
│ │ │ │ │ │ │ │
│ │ 视觉感知 │ │ 规划算法 │ │ 运动控制 │ │
│ │ 语音识别 │ │ 大语言模型 │ │ 机械臂控制 │ │
│ │ 传感器融合 │ │ 多模态推理 │ │ 导航定位 │ │
│ │ SLAM │ │ 任务编排 │ │ 安全监控 │ │
│ └─────────────┘ └──────────────┘ └─────────────────────┘ │
│ │ │ │ │
│ └────────────────┴────────────────────┘ │
│ │ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ 云端基础设施 │ │
│ │ 模型训练 │ 模型推理 │ 数据管理 │ 仿真测试 │ OTA 更新 │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘云端需求
| 需求 | 说明 | K8s 资源 |
|---|---|---|
| 模型训练 | 视觉、语言、控制策略等模型 | GPU 节点 + PyTorchJob |
| 模型推理 | 云端大模型推理(语言理解等) | GPU 推理服务 + HPA |
| 数据平台 | 采集数据管理、标注、清洗 | Deployment + NAS/OSS |
| 仿真环境 | Gazebo/Isaac Sim 机器人仿真 | GPU 节点 + 批处理 Job |
| OTA 管理 | 机器人固件/模型更新分发 | Deployment + OSS |
| 设备管理 | 机器人集群管理、监控 | IoT 平台 + K8s |
| API 网关 | 对外提供 API 服务 | Ingress + Service |
| 内部工具 | 标注平台、管理后台 | Deployment + Ingress |
二、架构设计
总体架构
┌──────────────────────────────────────────────────────────────────┐
│ 阿里云 ACK │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Ingress (ALB) │ │
│ │ api.robot.com │ admin.robot.com │ data.robot.com │ │
│ └─────────┬──────────────┬──────────────────┬─────────────┘ │
│ │ │ │ │
│ ┌─────────▼───┐ ┌───────▼──────┐ ┌────────▼───────┐ │
│ │ API 服务 │ │ 管理后台 │ │ 数据服务 │ │
│ │ (推理+业务) │ │ (Web + API) │ │ (采集+标注) │ │
│ │ Namespace: │ │ Namespace: │ │ Namespace: │ │
│ │ production │ │ internal │ │ data-platform │ │
│ └─────────────┘ └──────────────┘ └─────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 训练平台 │ │
│ │ Namespace: ml-training │ │
│ │ PyTorchJob │ 仿真 Job │ 数据预处理 Job │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 基础设施 │ │
│ │ Prometheus + Grafana │ Loki │ ArgoCD │ Redis │ PG │ │
│ │ Namespace: infra │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ 节点池: │
│ ├── CPU 通用池 (4C8G × 3-10) 业务服务 + 基础设施 │
│ ├── GPU 训练池 (A100/V100 × 按需) 模型训练 + 仿真 │
│ ├── GPU 推理池 (A10/T4 × 2-8) 在线推理 │
│ └── GPU Spot 池 (V100 × 按需) 可容错训练任务 │
│ │
│ 存储: │
│ ├── NAS (训练数据/模型/共享文件) │
│ ├── OSS (原始数据/日志/模型归档/OTA 包) │
│ └── 云盘 SSD (数据库) │
└──────────────────────────────────────────────────────────────────┘
机器人端 (边缘)
├── 连接云端 API (MQTT/gRPC)
├── 下载 OTA 更新包 (OSS)
├── 上报数据和日志
└── 本地推理 (边缘端小模型)命名空间规划
| Namespace | 用途 | 资源预算 |
|---|---|---|
production | 线上 API 服务、推理服务 | CPU 4C + GPU 按需 |
staging | 预发环境(同 production 结构) | CPU 2C |
ml-training | 模型训练、仿真、数据处理 | GPU 池 |
data-platform | 数据采集、标注平台 | CPU 4C |
internal | 管理后台、内部工具 | CPU 2C |
infra | 监控、日志、CI/CD、中间件 | CPU 4C |
三、分阶段落地计划
Phase 1: 基础搭建(第 1-2 周)
目标:搭建基本集群,跑通核心业务
bash
# 1. 创建 ACK 集群
# 控制台操作:选择托管版,杭州地域,配置 VPC
# 2. 创建节点池
# CPU 通用池:ecs.c7.xlarge (4C8G) × 3
# GPU 推理池:ecs.gn7i-c8g1.2xlarge (A10 × 1) × 2(后续按需扩)
# 3. 安装基础组件
# Ingress Controller (ALB)
# Metrics Server
# nvidia-device-plugin (GPU 节点)
# 4. 创建命名空间
kubectl create namespace production
kubectl create namespace staging
kubectl create namespace infra
# 5. 配置 ACR 免密拉取
# ACK 控制台 → 组件管理 → 安装 aliyun-acr-credential-helper
# 6. 部署基础中间件
helm install redis bitnami/redis -n infra
helm install postgresql bitnami/postgresql -n infra交付物:
- [ ] ACK 集群就绪
- [ ] kubectl 配置完成
- [ ] ACR 仓库创建
- [ ] 基础中间件部署
- [ ] Ingress 域名配置
Phase 2: 业务服务上线(第 3-4 周)
目标:核心 API 和推理服务上 K8s
yaml
# production/api-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: robot-api
namespace: production
spec:
replicas: 3
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: robot-api
template:
metadata:
labels:
app: robot-api
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app: robot-api
topologyKey: topology.kubernetes.io/zone
containers:
- name: api
image: registry-vpc.cn-hangzhou.aliyuncs.com/robotics/api:v1.0.0
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: db-secret
key: url
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
memory: "1Gi"
livenessProbe:
httpGet:
path: /healthz
port: 8000
initialDelaySeconds: 10
periodSeconds: 15
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
---
# 推理服务
apiVersion: apps/v1
kind: Deployment
metadata:
name: llm-inference
namespace: production
spec:
replicas: 2
selector:
matchLabels:
app: llm-inference
template:
metadata:
labels:
app: llm-inference
spec:
nodeSelector:
pool: gpu-inference
tolerations:
- key: nvidia.com/gpu
operator: Exists
effect: NoSchedule
containers:
- name: vllm
image: registry-vpc.cn-hangzhou.aliyuncs.com/robotics/llm-server:v1.0.0
ports:
- containerPort: 8000
resources:
limits:
nvidia.com/gpu: 1
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 120
periodSeconds: 10
volumeMounts:
- name: models
mountPath: /models
volumes:
- name: models
persistentVolumeClaim:
claimName: model-store交付物:
- [ ] API 服务部署
- [ ] 推理服务部署
- [ ] HPA 自动扩缩容配置
- [ ] Ingress + HTTPS 配置
- [ ] 健康检查和 PDB 配置
- [ ] Staging 环境镜像同步
Phase 3: CI/CD + 监控(第 5-6 周)
目标:自动化发布和可观测性
代码仓库
│ Push / Merge
▼
GitHub Actions / GitLab CI
│ 构建镜像 → 推送 ACR
│ 更新 Helm values / Kustomize
▼
ArgoCD (持续部署)
│ 监听 Git manifests 变更
│ 自动同步到 K8s
▼
K8s 集群
│ 部署 → 健康检查 → 就绪
▼
Prometheus + Grafana (监控)
Loki (日志)
AlertManager → 飞书/钉钉 通知bash
# 安装 ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 安装监控栈
helm install monitoring prometheus-community/kube-prometheus-stack \
-n infra \
--set grafana.adminPassword=<secret>
# 安装 Loki
helm install loki grafana/loki-stack -n infra交付物:
- [ ] CI Pipeline(构建+测试+推送镜像)
- [ ] ArgoCD 部署 + Git 仓库绑定
- [ ] Prometheus + Grafana 仪表盘
- [ ] 日志收集(Loki)
- [ ] 告警通知(飞书/钉钉 webhook)
Phase 4: 训练平台(第 7-8 周)
目标:支持模型训练和仿真
bash
# 创建 GPU 训练节点池
# ACK 控制台 → 节点池 → 创建
# 实例:ecs.gn7-c12g1.3xlarge (V100 × 1)
# 弹性伸缩:0-4 节点
# 创建 Spot 训练节点池
# 实例类型:抢占式实例
# 弹性伸缩:0-8 节点
# 安装 Training Operator
kubectl apply -k "github.com/kubeflow/training-operator/manifests/overlays/standalone"
# 创建共享存储
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: training-data
namespace: ml-training
spec:
accessModes: [ReadWriteMany]
storageClassName: alicloud-nas
resources:
requests:
storage: 1Ti
EOF交付物:
- [ ] GPU 训练节点池(按需 + Spot)
- [ ] Kubeflow Training Operator
- [ ] NAS 共享存储
- [ ] 训练任务模板(PyTorchJob)
- [ ] Checkpoint 自动保存策略
- [ ] TensorBoard 部署
- [ ] GPU 监控仪表盘(DCGM)
Phase 5: 数据平台 + 安全加固(第 9-10 周)
目标:数据管理和安全体系
yaml
# NetworkPolicy:零信任网络
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
namespace: production
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-api-to-db
namespace: production
spec:
podSelector:
matchLabels:
app: postgresql
ingress:
- from:
- podSelector:
matchLabels:
app: robot-api
ports:
- port: 5432
- from:
- podSelector:
matchLabels:
app: data-service
ports:
- port: 5432交付物:
- [ ] 数据采集服务部署
- [ ] 标注平台部署
- [ ] RBAC 权限配置(研发/运维/只读)
- [ ] NetworkPolicy 网络隔离
- [ ] Secret 管理(阿里云 KMS / External Secrets)
- [ ] 镜像安全扫描流水线
- [ ] Pod Security Admission 配置
Phase 6: 优化与规模化(持续)
目标:成本优化、弹性扩展
| 优化项 | 措施 | 预期效果 |
|---|---|---|
| GPU 利用率 | cGPU 共享 + 推理混部 | GPU 利用率 30%→70% |
| 训练成本 | Spot 实例 + Checkpoint | 节约 60-70% |
| 弹性 | HPA + Cluster Autoscaler | 自动应对流量峰值 |
| 推理延迟 | 模型量化 + TensorRT | P99 延迟降低 50% |
| 存储成本 | 冷热分层(NAS→OSS) | 节约 40% |
四、团队分工建议(5-10 人初创团队)
┌──────────────────────────────────────────────────┐
│ CTO / 技术负责人 │
│ - 架构决策、技术选型 │
│ - K8s 集群规划 │
│ │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ 后端/平台组 │ │ AI/算法组 │ │
│ │ 1-2 人 │ │ 2-4 人 │ │
│ │ │ │ │ │
│ │ - K8s 运维 │ │ - 模型训练 │ │
│ │ - CI/CD │ │ - 推理优化 │ │
│ │ - API 开发 │ │ - 数据处理 │ │
│ │ - 监控告警 │ │ - 仿真测试 │ │
│ └──────────────┘ └──────────────────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ 前端/产品组 │ │ 硬件/嵌入式组 │ │
│ │ 1-2 人 │ │ 1-2 人 │ │
│ │ │ │ │ │
│ │ - 管理后台 │ │ - 机器人端软件 │ │
│ │ - 标注平台 │ │ - OTA 更新 │ │
│ │ - 监控面板 │ │ - 边缘推理 │ │
│ └──────────────┘ └──────────────────────────┘ │
└──────────────────────────────────────────────────┘K8s 能力要求
| 角色 | K8s 技能要求 |
|---|---|
| 后端/平台工程师 | 熟练:集群管理、Helm、CI/CD、监控、故障排查 |
| AI 工程师 | 了解:PyTorchJob、GPU 调度、Dockerfile 编写 |
| 前端工程师 | 基础:编写 Dockerfile、理解 Deployment |
| 嵌入式工程师 | 基础:了解 OTA 服务的 API |
五、成本预估(月度)
初期(Phase 1-2,10 台以内机器人)
| 资源 | 规格 | 数量 | 月费(元) |
|---|---|---|---|
| ACK 托管版 | 免费 | 1 | 0 |
| CPU 节点 | 4C8G | 3 | ~900 |
| GPU 推理节点 | A10 × 1 | 2 | ~6,000 |
| NAS 存储 | 500GB | 1 | ~500 |
| SLB | 按量 | 2 | ~200 |
| 总计 | ~7,600 |
训练成本(按需使用,非固定月费):
| 任务 | GPU | 时长/月 | 费用 |
|---|---|---|---|
| 视觉模型训练 | V100 × 4 (Spot) | 40 小时 | ~800 |
| 语言模型微调 | A100 × 2 (Spot) | 20 小时 | ~1,200 |
| 仿真测试 | V100 × 1 (Spot) | 60 小时 | ~300 |
| 训练总计 | ~2,300 |
成长期(100+ 台机器人)
按比例扩展 CPU/GPU 节点池,启用 Cluster Autoscaler 实现弹性。 推理服务 HPA 根据请求量自动扩缩。
六、关键决策点
1. 自建 vs 托管
强烈推荐 ACK 托管版——初创公司不要花时间在集群运维上。
2. 单集群 vs 多集群
初期单集群即可(通过 Namespace 隔离)。当满足以下条件再考虑多集群:
- 需要多地域部署
- 单集群节点超过 100
- 合规要求强隔离
3. 推理服务方案选择
| 方案 | 适用场景 |
|---|---|
| vLLM | 纯文本 LLM(对话、指令理解) |
| Triton | 多框架混合(视觉+语言+控制) |
| 自建 FastAPI + PyTorch | 简单模型、快速迭代 |
初创公司建议:先用 FastAPI 快速验证,规模化后切换 Triton/vLLM。
4. 边缘与云端的分工
云端(K8s) 边缘(机器人端)
┌──────────────────┐ ┌──────────────────┐
│ 大模型推理 │ ◄────── │ 请求云端推理 │
│ (LLM, VLM) │ │ (复杂任务) │
│ │ │ │
│ 模型训练 │ ────────►│ 模型下载 (OTA) │
│ │ │ │
│ 数据存储/处理 │ ◄────── │ 数据上传 │
│ │ │ │
│ 远程监控/诊断 │ ◄────── │ 状态上报 │
└──────────────────┘ ├──────────────────┤
│ 本地推理 │
│ (小模型, 低延迟) │
│ 运动控制 │
│ 安全保护 │
└──────────────────┘原则:
- 低延迟、安全关键的放边缘
- 大模型、数据密集的放云端
- 通过 OTA 持续更新边缘模型
七、风险与应对
| 风险 | 概率 | 影响 | 应对措施 |
|---|---|---|---|
| GPU 资源不足 | 中 | 训练延迟 | 多地域 Spot + 预留实例 |
| 推理延迟过高 | 中 | 用户体验差 | 模型量化 + 边缘推理分流 |
| 集群故障 | 低 | 服务中断 | 多 AZ + PDB + 自动修复 |
| 成本超支 | 中 | 资金压力 | 资源监控告警 + 定期优化 |
| 数据泄露 | 低 | 合规风险 | 加密 + RBAC + 审计日志 |
| 人员流动 | 中 | 知识断层 | 文档化 + GitOps + IaC |
