大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
控制平面与工作节点
理解 控制平面(Control Plane) 与 工作节点(Worker Node) 的分工,是自建、排障与托管集群升级的基础。本课对应路线图「安装控制平面、管理 worker 节点」——不要求你手工 kubeadm 生产集群,但要能 读架构图、定位故障、安全扩节点。
学习目标
- 说出 API Server、etcd、Scheduler、Controller Manager、kubelet 各负责什么
- 描述一个新 Pod 从
kubectl apply到容器运行的请求路径 - 列出工作节点加入集群与下线时的检查项
控制平面组件
| 组件 | 职责 |
|---|---|
| kube-apiserver | 唯一入口;REST 校验、持久化到 etcd |
| etcd | 集群状态 KV 存储;备份即备份「期望世界」 |
| kube-scheduler | 为未绑定 Node 的 Pod 选节点 |
| kube-controller-manager | Deployment、ReplicaSet、Node 等控制循环 |
| cloud-controller-manager | 云 LB、路由、节点生命周期(托管集群常见) |
托管集群(k8a-managed)中上述组件由云厂商运维;你通过 版本升级通道 与 维护窗口 与之交互。
工作节点组件
Node
├─ kubelet 接收 PodSpec,调 containerd 起停容器
├─ kube-proxy Service ClusterIP 规则(或 eBPF 替代)
├─ containerd 拉镜像、跑容器([docker-essentials](/tracks/docker-essentials) 镜像仍适用)
└─ CNI 插件 Pod IP、NetworkPolicy
与 k8s-pods 中「Pod 是调度单元」一致:Scheduler 选 Node,kubelet 在本机兑现。
请求路径(简图)
kubectl / controller
→ API Server(authn/authz)
→ etcd 持久化
→ Scheduler 绑定 nodeName
→ kubelet 拉镜像、挂载卷、起容器
→ kubelet 上报状态 → API Server → etcd
Deployment 控制器在 controller-manager 里调谐副本数,见 k8s-deployments。
节点生命周期
加入:
- 节点 OS、containerd、kubelet 版本与集群匹配
- -bootstrap token 或证书加入
- 打标签:
node-role.kubernetes.io/worker、实例类型、AZ - 验证
kubectl get nodes Ready
维护/下线:
kubectl cordon禁止新 Pod 调度kubectl drain驱逐现有 Pod(尊重 PDB)- 升级 kubelet 或替换节点
- 旧节点
kubectl delete node
驱逐与资源压力见 k8a-resources。
生产注意点
- 高可用:控制平面多副本 + etcd 奇数节点(自建)
- 证书:apiserver ↔ kubelet、etcd 客户端证书有效期
- 升级顺序:控制平面 → kubelet(节点间可滚动)
- 监控:apiserver 延迟、etcd db 大小、scheduler 队列深度——衔接 k8a-obs
Helm 安装的集群附加组件(Ingress、Prometheus Operator)也走 API Server,RBAC 过宽会影响控制平面负载,见 helm-install。
练习
- 画控制平面 + 两个 Worker Node 的组件图
- 模拟:某 Node NotReady,列出 kubelet / CNI / 磁盘三组排查命令(概念即可)
- 说明 Deployment 滚动更新时 controller-manager 与 kubelet 各做什么
小结
API Server 是枢纽,etcd 是真相,kubelet 在节点上兑现 Pod。 下一课扩展到多集群管理视角。