K8s 控制平面(通俗+面试版)
控制平面 = K8s 集群的「管理中枢/大脑」 ,负责整个集群的调度、管控、状态维护;与之对应的是节点(Node),也就是真正跑业务容器的「干活节点」。
整个集群分为两大块:控制平面(Master) + 数据平面(Node)。
一、整体分工
- 控制平面(Master 节点)
不跑你的业务 Pod,只做集群管理、调度、控状态。 - 数据平面(Worker 节点)
运行业务容器、接收流量、处理业务请求。
二、控制平面 5 个核心组件(必考,逐个记)
一套标准 K8s 控制平面由 5 个核心进程组成,默认都跑在 Master 节点上:
1. kube-apiserver(唯一入口)
- 集群所有操作的唯一入口,所有人/组件想操作集群都先找它。
- 负责:认证、鉴权、数据校验、请求转发。
- 所有组件只和 apiserver 通信,组件之间不直接互访。
- 示例:
kubectl get pods→ 命令先发给 apiserver。
2. etcd(集群数据库)
- K8s 唯一持久化存储,保存集群所有资源数据:Pod、Deployment、Service、配置、状态等。
- 键值型数据库,集群所有状态全存在这里。
- 特点:强一致性、高可用,一般部署集群版。
3. kube-scheduler(调度器)
- 专门负责把新 Pod 挑选一个合适的 Node 节点去运行。
- 调度分两步:
- 预选:过滤掉不符合条件的节点(资源不足、污点、亲和性不匹配等)
- 优选:对剩余节点打分,选分数最高的节点绑定 Pod
4. kube-controller-manager(控制器管理器)
- 内部包含多种控制器,持续对比「期望状态」和「实际状态」,不断调优至一致。
- 常见控制器:
- 副本控制器:保证 Deployment 维持指定副本数
- 节点控制器:监控节点是否宕机
- 命名空间、PVC、Service 控制器等
- 简单理解:死磕"现状 = 期望"。
5. cloud-controller-manager(可选,云厂商专用)
- 对接公有云(阿里云/腾讯云/AWS 等)API。
- 实现云资源联动:比如创建 LoadBalancer 类型 Service 时,自动在云上创建负载均衡。
- 自建物理机/Minikube 一般不用。
三、工作流程举例(帮你串起来理解)
以 kubectl apply -f deployment.yaml 为例:
- 你执行命令 → 请求发给 kube-apiserver
- apiserver 校验合法 → 把数据写入 etcd
- kube-scheduler 发现有未调度的 Pod → 选一个最优 Node
- kube-controller-manager 持续监听,保证副本数量符合配置
- 对应 Node 上的 kubelet 监听到变化 → 拉镜像、启动容器
四、补充概念
-
高可用控制平面
生产环境不会只单台 Master,一般部署 3 台 Master 做集群,实现控制平面高可用,一台挂了集群照样能用。
-
Minikube 里的控制平面
Minikube 是单节点集群 ,控制平面组件 + 业务容器全部跑在同一台虚拟机里,不分独立 Master/Worker。
-
和 Node 组件区分(别搞混)
下面这两个不属于控制平面,是 Node 上的组件:
- kubelet:每个节点代理,管理本机 Pod、探针、生命周期
- kube-proxy:维护 Service 网络规则
五、面试精简回答(直接背诵)
K8s 控制平面就是集群的管理大脑,由 kube-apiserver、etcd、kube-scheduler、kube-controller-manager 等组件组成。
主要负责集群认证、数据存储、Pod 调度、状态管控,不运行业务容器;真正跑业务的是工作节点(Node)。