KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

课程导读 · Kubernetes 应用课 — keel 龙骨

Kubernetes 应用课:把编排用对 的参考信息:课程导读 · Kubernetes 应用课

从「YAML 能提交」到「知道它会在集群里怎么卡住」

你现在的起点

先对一下。下面四条里只要有一条不确定,对应章节就是为你写的:

  1. 你能说清 kubectl apply 返回成功之后,还有哪些事没发生;
  2. 你的 Deployment 清单里同时有 requests 与 limits,并且你能说出两者分别被谁使用;
  3. 你的 Pod 有三个探针(startupProbe / readinessProbe / livenessProbe),并且知道少任何一个会出什么问题;
  4. 你改过 ConfigMap 之后,知道哪些 Pod 会看到新值、哪些不会。

第 4 条是最容易答错的一条。多数人的直觉是"改了配置,重启一下就好了"——方向对,但**"重启"发生在什么时候、由谁触发**这件事,K8s 故意没有替你做。

一条能走通的学习路径

它怎么运转              01 声明式与调谐:apply 之后发生了什么
  ↓
对象怎么分工            02 清单解剖:谁管什么,标签怎么连接它们
  ↓
怎么判定"活着"          03 探针三件套:三个判定,三种后果
  ↓
怎么判定"装得下"        04 资源预算:requests 与 limits 是两件事
  ↓
怎么安全地换版本        05 滚动更新:算术、回滚与 revision
  ↓
外部的东西怎么进去      06 配置与密钥:两种传播语义
  ↓
坏了怎么查              07 异常状态分流与选型边界

01–02 是地形(它怎么运转、对象怎么分工),03–06 是四个具体判断点(活着、装得下、换版本、喂配置),07 收口到排障。

03 与 05 之间有依赖:没有 readinessProbe,滚动更新的"就绪"判定就无从谈起。建议连着读。

章节地图

章 关键问题 你会亲手验证什么
01 声明式与调谐 apply 成功意味着什么?控制器在做什么? 用 kubectl kustomize 离线构建出 base/两套 overlay,并看到 apply --dry-run=client 在无集群时照样失败
02 清单解剖 每个对象的职责边界在哪?标签为什么是"连接组织"? 实测 namePrefix 改写了资源名与引用,却没有改 selector
03 探针三件套 三种探针分别判定什么、判错的后果是什么? 从构建产物算出 startupProbe 的启动容忍预算(实测 60 秒)
04 资源预算 requests 与 limits 分别被谁使用?超卖怎么算? 算出全清单的 requests/limits 合计与超卖比(实测 CPU 4.17 倍)
05 滚动更新与回滚 滚动更新在滚什么?maxUnavailable: 0 保证什么? 用静态检查抓出 maxSurge=0 + maxUnavailable=0 的死锁组合
06 配置与密钥 为什么改了 ConfigMap 而 Pod 里没变? 用引用解析检查抓出"引用了不在清单里的对象"这一类问题
07 异常状态与边界 五种常见异常状态分别从哪查起?什么时候不该上 K8s? 用两套检查各自跑一遍,看它们分别漏掉什么

每章统一以 现场 → 机制推演 → 实测输出 → 生产边界 → 动手 → 故障注入 → 自测 收束。

与相邻课程的分工

前置要求

实验环境说明

实测输出来自一台 Windows + kubectl v1.34.1(Kustomize v5.7.1)+ kubeconform v0.8.0 的机器,没有集群。

Linux 集群上的绝对数值与你这里的会不同。请读输出里"哪个字段被改写、哪个判定被触发",不要抄任何具体数字当阈值。

进入 keel 阅读