AI Infra 训练营
总览
  • Day 1 · 集群起步 + CNI
  • Day 2 · 控制面 + etcd
  • Day 3 · CRD + Operator + Webhook
  • Day 4 · 存储深度
  • Day 5 · 卷扩容 + 安全
  • Day 6 · 调度 + 可观测
  • Day 7 · Harbor + ArgoCD + Mesh
  • Day 8 · AI Infra
  • Day 9 · Triton + GPU
  • Day 10 · MIG + HPA + 量化
  • Day 11 · AI Agent 端到端
  • Day 12 · 灾备
  • Day 13 · Operator + 联邦 + Mesh + RAG
  • Day 14 · CKA / CKS + 总结
  • LLM 训练手册
  • RAG + Agent 手册
  • 推理优化手册
  • 上下文工程手册
  • Agent 开发手册
  • 面试深度复盘
  • 训练 v2 深度手册
HiHuo 主站
GitHub
总览
  • Day 1 · 集群起步 + CNI
  • Day 2 · 控制面 + etcd
  • Day 3 · CRD + Operator + Webhook
  • Day 4 · 存储深度
  • Day 5 · 卷扩容 + 安全
  • Day 6 · 调度 + 可观测
  • Day 7 · Harbor + ArgoCD + Mesh
  • Day 8 · AI Infra
  • Day 9 · Triton + GPU
  • Day 10 · MIG + HPA + 量化
  • Day 11 · AI Agent 端到端
  • Day 12 · 灾备
  • Day 13 · Operator + 联邦 + Mesh + RAG
  • Day 14 · CKA / CKS + 总结
  • LLM 训练手册
  • RAG + Agent 手册
  • 推理优化手册
  • 上下文工程手册
  • Agent 开发手册
  • 面试深度复盘
  • 训练 v2 深度手册
HiHuo 主站
GitHub

K8s + 平台 + AI Infra 两周深度笔记 — 总纲

14 天系统过 K8s 内核 + 周边基础设施 + AI Infra,覆盖集群运维 / CNI / 存储 / Operator / 网络与服务网格 / 安全 / 可观测 / 制品 / GitOps / GPU 调度 / 推理 / 训练 / 灾备 / 多集群。 关键原则:真实手感 + 真实踩坑 + 真实排查 > 背书 / 抄文档 / 看视频。


0. 学完后能讲什么(面试 anchor)

主题学完能拍胸脯讲的话
K8s 集群运维"我亲手 kubeadm 起过 3 CP HA 集群,etcd raft 选主/quorum 损坏恢复都跑过 chaos drill"
CNI 选型"Calico vs Cilium 我都装过装挂过,BGP RR 配置过,Cilium eBPF dataplane 性能基准我测过"
存储"Longhorn / Rook-Ceph 都跑过 stateful workload,跨节点迁移、快照恢复、PV 卡 detach 我都修过"
Operator 开发"用 kubebuilder 从 0 写过 1 个生产可用 Operator,reconcile 幂等 / finalizer 防卡 / admission webhook 全套做过"
网络 + 服务网格"ingress-nginx + cert-manager + NetworkPolicy 上过线,Linkerd / Istio 数据面差异我对比过"
安全"RBAC 最小权限做过,OPA Gatekeeper / Kyverno 写过策略,Vault + external-secrets 接过,cosign signed image admission 做过"
可观测"Prom + Loki + Tempo + OTel 完整栈我跑过,Prom WAL 爆盘 / Loki label cardinality 炸过都修过"
制品管理"自建 Harbor + Trivy + cosign + signed image 校验,Replication 跨地域同步配过"
CI/CD"Jenkins / Tekton / Argo Workflows / Gitea Actions 四个都用过,适用场景差异能讲"
GitOps"ArgoCD app-of-apps + ApplicationSet 多 env 流水线做过,drift detection / Argo Rollouts 灰度发布上过"
AI infra: 推理"vLLM / TGI / Ollama / Triton / KServe 五个推理引擎都部署过,显存碎片 / 冷启动 / 量化模型加载我都踩过"
AI infra: 训练"Kubeflow / Volcano gang scheduling / MPI Operator 都跑过分布式训练,LoRA / QLoRA 微调 + DeepSpeed/FSDP 概念能讲"
AI infra: 调度"GPU device-plugin / MIG / MPS / time-slicing 几种共享方案对比过,生产场景取舍能讲"
多集群"ArgoCD 多集群 + Cluster API 概念能讲,跨集群 service discovery 实操过"
故障排查"做过 7 次 chaos drill,每次都有完整 postmortem,排查从'症状'到'根因'的链路熟"

1. 课程结构(14 天,2 周冲刺)

Week 1:K8s 内核 + 周边基础设施(Day 1-7)

Day主题早午晚MD 字数
1集群起步 + CNI 选型 + DNS 调优kubeadm 起 3 CP HA + etcd stacked vs external 对比Calico vs Cilium 装 + dataplane 性能对比CoreDNS 调优 + node-local-dns + DNS 故障演练~5500
2控制面 + etcd 内核 + 故障注入apiserver 启动参数 / admission chain / auditetcd 内核 (raft / MVCC / compaction / defrag / backup-restore)chaos: kill etcd member / split-brain / apiserver 起不来~5500
3CRD + Operator + Webhookkubebuilder 脚手架 + CRD 设计原则(InferenceService / TrainingJob 拆解)reconciler 幂等 + finalizer 模式 + status patchadmission webhook (validating + mutating) + cert-manager 给 webhook 签证~5500
4存储深度PV/PVC + StorageClass + CSI 概念 + reclaim policyLonghorn 装 + stateful workload + 快照 + 跨节点Rook-Ceph 入门 + RWX 对比 + 性能 benchmark~5500
5网络 + Ingress + Service MeshService 类型 + Ingress (nginx vs traefik) + cert-manager + Let's EncryptNetworkPolicy + Calico/Cilium L3/L4/L7 策略Linkerd 装 + traffic split + mTLS + observability + 对比 Istio~6000
6安全完整栈RBAC + ServiceAccount + token rotation + auditPod Security Standards + OPA Gatekeeper vs Kyverno 实操Vault + external-secrets + cosign signed image + admission verify~6000
7可观测性栈Prometheus 内核 (WAL/TSDB/remote_write/federation) + 告警最佳实践Loki 索引设计 + label cardinality + 跨日期查询Tempo + OpenTelemetry 跨服务 trace + Grafana 统一面板 + 告警去抖~6000

Week 2:制品管理 + GitOps + AI Infra + 综合(Day 8-14)

Day主题早午晚MD 字数
8Harbor + 镜像安全栈Harbor 自建完整组件 (postgres/redis/registry/chartmuseum/trivy)Trivy + cosign + Notary v2 镜像签名signed image admission 校验 + GC + Replication 跨地域~5500
9CI/CD 四方对比 + 流水线工程Jenkins + Tekton 架构对比Gitea Actions + Argo Workflows 对比 + 适用场景实操完整 pipeline (代码 → 测试 → 扫描 → 推送 → 部署 + 缓存优化)~6000
10GitOps 完整生态ArgoCD vs Flux 架构对比 + ArgoCD 装app-of-apps + ApplicationSet + multi-env 升级流程sealed-secrets / external-secrets + Argo Rollouts / Flagger 渐进发布~6000
11GPU 接入 + 推理引擎 deep 对比nvidia-device-plugin + MIG 切分 + GPU sharing (MPS / time-slicing) 对比vLLM / TGI / Ollama / Triton 部署 + 性能 benchmarkKServe + Ray Serve + canary release + 多模型 ensemble~6500
12训练编排 + 分布式训练Kubeflow 完整生态 (notebook / pipeline / katib / kserve)Volcano gang scheduling + MPI Operator + LoRA/QLoRA 实战分布式训练 (DeepSpeed / FSDP / ZeRO 概念) + 单机多卡跑通 + NCCL 调优~6500
13多集群 + 边缘 + 平台工程ArgoCD 多集群 + Cluster API 入门K3s / KubeEdge 边缘集群 + 与中心集群联动Crossplane (云资源 as CRDs) + Backstage (内部开发者平台) 入门~5500
14chaos drill + 面试模拟 + 整合复习5 道经典面试设计题模拟(详见第 4 节)综合 chaos drill + postmortem14 天笔记整合 + 高频面试题清单 + "我能讲的故事" 总结~5500

总字数约 78,000-83,000 字 = 一本小书厚度。


2. 每天的固定输出模板

每天结束按这个模板整理 MD:

# Day X: <主题> (yyyy-mm-dd)

## 0. TL;DR (3 句话讲清楚)
- ...
- ...
- ...

## 1. 学习目标 + 闭环输出
- 能秒答: ...
- 能动手做: ...
- 产出物: ...

## 2. 关键概念 + 架构图
- 概念 A: ...(为什么存在 + 解决什么 + 替代方案)
- 概念 B: ...
- ASCII 架构图

## 3. 实操详细步骤
- 命令 / YAML / 完整可复制
- 每步注释"为什么这么做"

## 4. 多方案对比(深度)
| 方案 | 优势 | 劣势 | 适用 | 不适用 |
|---|---|---|---|---|

## 5. 踩坑实录(面试金矿)
| 现象 | 根因 | 排查命令 | 修复 | 教训 |
|---|---|---|---|---|

## 6. 源码 / 文档片段(对照学)
- 关键源码 5-10 行 + 注释
- 上游文档关键章节链接

## 7. 面试常见题 + 标准答法(8-12 题)
- Q1: ...
  - A: 一句话答 / 30 秒展开 / 被深问时的转向
- ...

## 8. 自查 checklist
- [ ] 能秒答 X
- [ ] 能不查文档写 Y
- [ ] 能闭眼复现 Z

## 9. 延伸 / 待深挖
- ...

3. 每天的踩坑预告(Week 1)

提前列出每天典型会撞的坑,正式动手时减少卡壳,提高排查效率

Day 1: 集群起步 + CNI

  • ❗ kubeadm token 24h 过期,worker join 失败 → kubeadm token create --print-join-command
  • ❗ Pod CIDR(默认 10.244.0.0/16)与你 VPC 网段冲突 → --pod-network-cidr 自定义
  • ❗ Calico BIRD BGP 收不到对端 → calicoctl node status + 路由反射器配置
  • ❗ Cilium eBPF 要求内核 ≥4.19,有些机器需升级内核
  • ❗ CoreDNS Pod 在 master 上不调度 → taint/toleration
  • ❗ DNS 解析慢:节点本地 DNS 缺失 / ndots:5 引起多次查询 → node-local-dns 部署
  • ❗ 多 CP 时 etcd 成员加入顺序错乱

Day 2: 控制面 + etcd

  • ❗ etcd defrag 时锁住整个 apiserver,生产期间不能盲做
  • ❗ 一个 CP 挂了,新建 Pod 偶发失败(etcd 选主 5-10s 期间)
  • ❗ etcd quorum loss(2/3 down)→ 数据可能不一致,需要 etcdctl snapshot restore
  • ❗ apiserver --etcd-prefix 写错 → 新集群读到老数据
  • ❗ audit policy 错配 → audit log 暴涨打满盘
  • ❗ kubelet 与 apiserver 版本差 ≥ 2 minor → 启动失败
  • ❗ admission chain 顺序错 → mutation 在 validation 后失效

Day 3: CRD + Operator

  • ❗ Reconcile 无限循环:r.Update() 触发新 watch event 又来 reconcile
  • ❗ Finalizer 卡死:Operator 挂了,CRD 永远 Terminating,只能 kubectl patch 手动清
  • ❗ Status 子资源没启用 → status update 也算 generation 变化,触发额外 reconcile
  • ❗ Webhook cert 过期 → 整个集群创建资源失败(因为 webhook deny)
  • ❗ Mutating webhook 在 validating 后 → mutate 不生效
  • ❗ Leader election 配置错 → 两个 Operator 实例同时跑 reconcile,资源出现 race
  • ❗ kubebuilder 生成的 RBAC 不够 / 太宽

Day 4: 存储

  • ❗ 默认 StorageClass 未设 → PVC 永远 Pending
  • ❗ volumeBindingMode: WaitForFirstConsumer 时 Pod 起不来,PVC 也不 bind,看起来死锁
  • ❗ Longhorn replica 不健康 → PVC 看起来 Bound 但 IO hang
  • ❗ Node drain 时 PV 卡 detach → 强制删除 attachments
  • ❗ StatefulSet replica 缩容时 PVC 不删除(设计如此,但容易误以为 bug)
  • ❗ ReadWriteMany 错用,大部分 CSI 不支持
  • ❗ Ceph mon 数量必须奇数,否则 quorum 错

Day 5: 网络

  • ❗ 多个 Ingress class 未指定 → kubernetes.io/ingress.class 注解被废弃
  • ❗ cert-manager challenge 解析失败:DNS-01 vs HTTP-01 选错
  • ❗ NetworkPolicy 默认全 allow,你以为是 deny → 必须先 default-deny 才安全
  • ❗ Service externalTrafficPolicy: Local 时,客户端 IP 保留但跨节点流量丢失
  • ❗ Headless Service 给 StatefulSet 用,但你忘了配 → DNS 解析不到 pod
  • ❗ Linkerd inject 后 init container 顺序错 → 应用启动前 mesh 没就绪
  • ❗ Istio gateway 与 Ingress 冲突

Day 6: 安全

  • ❗ ClusterRoleBinding 给 default SA cluster-admin → 整个集群裸奔
  • ❗ ServiceAccount token 自动挂载没关 → 应用容器内可读 SA 凭据,横向移动
  • ❗ Pod Security Admission 升级后 deprecated Pod Security Policy 行为变化
  • ❗ Gatekeeper constraint 写错 → 拒绝所有 Pod 创建
  • ❗ Vault auto-unseal 用 cloud KMS,云凭据丢了 unseal 不了
  • ❗ cosign verify 慢 → admission webhook 超时 → Pod 起不来
  • ❗ Secret 用 etcd 加密 (KMS) 时,KMS 不可用 → 读不到 secret

Day 7: 可观测性

  • ❗ Prometheus WAL 爆盘:retention 没配 / 抓取间隔过密
  • ❗ Loki label cardinality 爆炸:把 user_id / request_id 当 label
  • ❗ Prom federation 时 sum() 没 by () → 标签丢失
  • ❗ Grafana datasource 配错 → 看不到数据但不报错
  • ❗ OTel collector 内存炸:batch size 没限,采样率 100%
  • ❗ Alertmanager group_wait / group_interval 没调 → 告警风暴或漏报
  • ❗ Tempo retention 短,长链路 trace 看不全

4. 每天的踩坑预告(Week 2)

Day 8: Harbor

  • ❗ Harbor GC 没配 → 镜像删除但 blob 不清,盘满
  • ❗ Trivy 漏洞库下载失败(GFW)→ 镜像扫描全无结果
  • ❗ Replication 跨地域:目标 Harbor unhealthy 时 source 阻塞
  • ❗ cosign sign 时密钥泄漏到日志
  • ❗ Helm Chart 仓库 chartmuseum 已废弃,Harbor 切到 OCI 模式后 chart 上传方式变
  • ❗ Notary v2 与 v1 不兼容

Day 9: CI/CD

  • ❗ Jenkins agent 池没配 → master OOM
  • ❗ Docker layer cache 没用 → 每次 build 重复下基础镜像
  • ❗ secret 在 shell 中 echo 出来漏到日志
  • ❗ Tekton TaskRun 并发限制:workspace 共享 PVC 冲突
  • ❗ Gitea Actions 与 GitHub Actions 不完全兼容(部分 action 跑不了)
  • ❗ Argo Workflows 大 DAG 时 controller 内存压力大
  • ❗ Pipeline 跑出竞态:多分支同时触发 deploy 同一 env

Day 10: GitOps

  • ❗ ArgoCD auto-sync 把你手动 hotfix 覆盖 → 必须用 --ignore-differences
  • ❗ helm chart values 优先级混乱:CLI > file > Application.spec.helm.values
  • ❗ ApplicationSet 模板渲染错误,几十个 app 全部失败
  • ❗ Flux v1 → v2 迁移 breaking changes
  • ❗ sealed-secrets 控制器换 key,旧 secret 解不了
  • ❗ Rollouts analysis 指标查询慢 → 误判健康
  • ❗ ArgoCD refresh interval 默认 3 min,改动看不到 → 调短带来 apiserver 压力

Day 11: GPU + 推理

  • ❗ device-plugin DaemonSet 起不来:cgroup driver 与 docker/containerd 不匹配
  • ❗ MIG 切分后 device-plugin 看不到子设备:需 mig-mode 重启
  • ❗ MPS (multi-process service) 与 time-slicing 不能同时启用
  • ❗ vLLM 启动慢:模型 load 时间长,readiness probe 超时
  • ❗ Ollama 在 K8s 里 model 文件目录权限:UID 0 与非 root 容器冲突
  • ❗ Triton ensemble 配置:输入输出 tensor 名字必须完全一致
  • ❗ NCCL 跨节点不通:RoCE / IB 网络 / GID index 配置
  • ❗ KServe Inference Graph 路由路径错

Day 12: 训练编排

  • ❗ Volcano gang 调度死锁:资源不够时一直 Pending,scheduler 不会回收
  • ❗ Kubeflow Pipeline 跨 step 传输大文件:用 PVC 而不是 artifact
  • ❗ MPI Operator launcher Pod 完成但 worker 还在 → 资源没释放
  • ❗ DeepSpeed ZeRO-3 时 checkpoint 必须 collect,直接 load 是错的
  • ❗ FSDP wrap policy 不对 → 内存不省反增
  • ❗ LoRA 训完没 merge 直接推理 → 性能损失
  • ❗ 训练任务 OOM 自动重启循环不退 → 必须设 backoffLimit

Day 13: 多集群 + 平台工程

  • ❗ ArgoCD 远程集群凭据轮换:secret 失效 → 整个集群同步停
  • ❗ Cluster API:用 cloud provider 时凭据范围最小化难做
  • ❗ K3s server token 与 agent token 混淆
  • ❗ KubeEdge 边端断网恢复后 sync 慢
  • ❗ Crossplane provider 凭据泄漏到 etcd
  • ❗ Backstage catalog 同步爆 GitHub rate limit

Day 14: chaos + 复习

  • ❗ 自己设计的 chaos drill 没"安全护栏",一次干翻整个集群
  • ❗ Postmortem 写成"日记",没有真根因 + 改进项
  • ❗ 面试答题答到一半发现自己其实没真懂
在 GitHub 上编辑此页