从“大脑”到“肌肉”:一张图搞懂K8s集群组件架构

📅 2026/7/18 2:50:16 👁️ 阅读次数 📝 编程学习
从“大脑”到“肌肉”:一张图搞懂K8s集群组件架构

从“大脑”到“肌肉”:一张图搞懂K8s集群组件架构

本文专为初学者设计,用最通俗的语言拆解Kubernetes集群的各个组件,让你一次性搞懂它们各自是干什么的。

一、先记住一个比喻

如果把一个K8s集群比作一家大型物流公司

  • 控制平面(Control Plane)就是公司的总部——负责接单、调度、监控全局;

  • 工作节点(Worker Node)就是各地的仓库和配送站——负责实际存放货物(运行容器)。

K8s集群由控制平面工作节点两大部分组成。控制平面管理集群的整体状态,工作节点则承载实际运行的容器化应用。

下面我们逐一拆解每个组件。

二、控制平面(Control Plane)——“总部”的四大核心部门

控制平面负责做出集群的全局决策(比如把Pod调度到哪个节点),以及检测和响应集群事件(比如某个Pod挂了需要重新拉起)。它由四个核心组件组成:

🚪 1. API Server——唯一的前台接待

API Server是Kubernetes的核心组件,它公开了Kubernetes API,是整个控制平面的前端入口

所有与集群的交互——无论是你用kubectl敲的命令、其他组件的内部通信,还是外部系统的调用——都必须经过API Server。它负责认证、授权和校验每一个请求。

一句话总结:API Server是集群的“唯一大门”,所有人都得从这里进出。

💾 2. etcd——集群的“数据库”

etcd是一个一致且高可用的键值存储,用作Kubernetes所有集群数据的后台数据库

集群的每一个状态——有哪些节点、跑了哪些Pod、配置了什么Service——全部保存在etcd里。API Server是唯一与etcd直接交互的组件。

一句话总结:etcd是集群的“记忆中心”,所有信息都记在这里。

📋 3. Scheduler——调度员

Scheduler负责监视新创建的、尚未分配节点的Pod,并为其选择一个最合适的节点来运行。

调度决策会综合考虑资源需求、硬件/软件策略约束、亲和性规范等多种因素。它不是随便乱选,而是“精打细算”地安排。

一句话总结:Scheduler是“调度员”,决定每个Pod去哪台机器上干活。

🔧 4. Controller Manager——自动化运维团队

Controller Manager运行着各种各样的控制器,负责实现Kubernetes API的各种行为。

每个控制器都是一个独立的过程,持续监控系统当前状态,一旦发现与期望状态不一致,就自动执行调整。比如:ReplicaSet控制器确保指定数量的Pod始终在运行;Deployment控制器管理滚动更新和回滚。

一句话总结:Controller Manager是“自动化运维团队”,确保集群始终按你的期望运行。

三、工作节点(Worker Node)——“一线员工”的三大标配

每个工作节点上都运行着三个核心组件,它们共同负责让容器真正跑起来。

👷 1. Kubelet——节点上的“监工”

Kubelet是运行在每个工作节点上的主要代理,它负责与API Server通信,确保节点上的容器按照PodSpec的定义正常运行。

Kubelet管理Pod的整个生命周期——创建、运行、健康检查、销毁——并定期向API Server报告节点和Pod的状态。

一句话总结:Kubelet是节点上的“监工”,负责管好本节点上的所有Pod。

🌐 2. Kube-proxy——网络规则维护员

Kube-proxy负责维护节点上的网络规则,实现Service的负载均衡和服务发现功能。

简单说,当你要访问某个Service时,kube-proxy帮你把请求正确地转发到后端的某个Pod上。

一句话总结:Kube-proxy是“网络交警”,保证流量走对路。

🐳 3. 容器运行时——真正“干活”的人

容器运行时是真正负责运行容器的软件,比如Docker、containerd或CRI-O。

Kubernetes通过容器运行时接口(CRI)与不同的容器运行时进行交互,这使得K8s可以灵活地支持多种运行时。

一句话总结:容器运行时是“一线搬运工”,真正把容器拉起来跑。

四、它们如何协同工作?(一个完整的请求流程)

假设你执行kubectl create deployment nginx --image=nginx

  1. kubectl将请求发给API Server

  2. API Server认证通过后,把这个“我要跑一个Nginx”的信息存入etcd

  3. Scheduler监听到有新的Pod需要调度,选一个合适的工作节点,把结果告诉API Server;

  4. 目标节点上的Kubelet收到指令,通知容器运行时拉取镜像并启动容器;

  5. Controller Manager持续监控,确保这个Nginx Pod始终在运行(挂了就自动重建)。

💡关键点:所有组件都只与API Server通信,彼此之间不直接打交道。这种设计让各组件松耦合,便于独立升级和扩展。

五、给小白的一张速记表

组件所属一句话记忆
API Server控制平面唯一大门,所有请求都经过它
etcd控制平面集群数据库,存所有状态
Scheduler控制平面调度员,给Pod分配节点
Controller Manager控制平面自动化运维,维持期望状态
Kubelet工作节点节点监工,管理Pod生命周期
Kube-proxy工作节点网络交警,维护流量规则
容器运行时工作节点一线搬运工,真正跑容器

写在最后

K8s的组件虽多,但逻辑非常清晰:控制平面负责“想”和“管”,工作节点负责“做”。API Server是唯一入口,etcd是记忆中心,Scheduler做决策,Controller Manager保稳定,Kubelet和容器运行时负责执行。

把这几个角色搞清楚了,你就已经掌握了K8s架构的核心。剩下的,就是在实践中慢慢加深理解了。

📚延伸阅读:Kubernetes官方文档 - 组件概述(最权威的参考资料)