你每天都会执行这样一条命令:
kubectl apply -f deployment.yaml
但你有没有想过:
如果把 Kubernetes 拆开来看,你会发现:
所有组件之间,从不直接通信。 它们只做一件事:围绕 API Server 工作。
有的人以为:
kubectl apply = 创建 Pod
但实际上,这只是一个“请求入口”。
真正的过程如下👇

🔑 一句话记住:
kubectl 只负责把“期望状态”提交给 API Server。
我们按图一步一步拆解:
kubectl 将 YAML 转换为 HTTP 请求: POST /api/v1/namespaces/default/pods
API Server 是唯一入口。
请求进入后,不是直接写入,而是经历“三道关卡”:
🔐 ① Authentication(你是谁?) 验证用户身份(证书 / Token / OIDC)
🛡 ② Authorization(你能干什么?) 检查 RBAC 权限
⚙ ③ Admission(你是否合规?) 分两类:
🔑 这三道关保证了只有合法的请求才能改动集群状态。
通过所有检查后: 👉 Pod 被写入 etcd
此时状态:Pending
⚠️ 注意: Pod 还没有运行,只是“被记录下来”了。
Scheduler 并不会轮询 API Server。 它做的是:Watch Pod 变化
发现 Pending Pod 后:
❓ 猜一猜:Scheduler 是每秒问一次,还是“有事叫我”? 答案就是:事件驱动,不用轮询。
Controller 通过 Watch:
每个 Node 上的 kubelet,同样通过 Watch:
容器启动后,kubelet 上报状态:Running 并同步回 API Server。
回到上面那张生命周期全景图,整个流程可以拆成两大阶段:
kubectl → API Server → 认证/鉴权/准入 → etcd
👉 这个阶段只是把“期望状态”安全地存进数据库,Pod 还没真正运行。
etcd 里的变化通过 Watch 机制,同时推送给三个角色:
👉 最后容器运行时创建完成,Pod 状态回到 API Server,变成 Running。
🔑 API Server 不干活,它只负责收消息、存状态、发通知。 真正干活的是 Scheduler 和 kubelet。
这是 Kubernetes 最核心的设计:
1️⃣ 统一入口
所有请求必须经过 API Server → 避免系统混乱
2️⃣ 数据一致性
只有 API Server 可以写 etcd → 防止数据冲突
3️⃣ 权限控制
所有操作必须认证授权 → RBAC 体系完整
4️⃣ Watch 机制
组件不是轮询,而是事件驱动 → 性能极高
🔑 API Server 就是集群的“总控开关”和“交通指挥”。
如果组件直接访问 etcd:
Kubernetes 会变成一个“分布式野数据库”。
API Server 本身不执行任何调度或容器创建,它的作用是:
👉 让整个 Kubernetes 集群保持一致性与可控性。
📚 想更系统地搞懂 API Server?
在 1HairLabs 的完整版文章里,我画了更详细的架构图,还整理了:
👉 点击 [阅读原文]
Kubernetes 的设计本质不是“自动化”,而是: 通过 API Server 实现统一状态管理的分布式系统。
理解这一点,你才算真正理解 Kubernetes。
Kubernetes 的设计本质不是“自动化”,而是: 通过 API Server 实现统一状态管理的分布式系统。
理解这一点,才算真正理解 Kubernetes。