Kubernetes 架构大体分为两类节点:

控制平面节点(Control Plane):负责集群管理、调度和全局决策。

工作节点(Worker Node):负责运行用户的容器化应用。

控制平面组件(Control Plane Components)

kube-apiserver 集群的“前台”,所有操作都通过它的 REST API 接口。控制器、调度器、kubectl 等都通过它通信。 etcd 分布式键值数据库,保存整个集群状态(元数据存储),如Pod、Node、ConfigMap等。 kube-scheduler 负责将未分配节点的 Pod 分配到合适的 Node 上。 kube-controller-manager 运行各种控制器(如 NodeController、ReplicaSetController、EndpointController 等),用于维护系统期望状态。 cloud-controller-manager(可选) 与云服务提供商交互,如自动创建负载均衡器、挂载云盘等。

工作节点组件(Node Components)

kubelet 节点上的主要代理程序,接收 API Server 的指令并控制 Pod 启动、停止等生命周期管理。 kube-proxy 实现服务的网络代理功能,为 Pod 提供通信和负载均衡。 container runtime(容器运行时) 运行容器的工具,如 containerd、CRI-O、Docker(已废弃)等。

附加组件(Add-ons)

CoreDNS 负责服务发现和 DNS 解析。 Ingress Controller 控制外部流量如何进入集群(如 Nginx Ingress)。 Metrics Server 提供资源使用度量(CPU、内存等),供 HPA(Horizontal Pod Autoscaler)使用。 Dashboard Kubernetes 的 Web UI 控制面板。

组件之间的交互简述

1.kubectl 命令 → 发送请求到 kube-apiserver。

2.apiserver → 操作 etcd 读取/写入集群状态。

3.scheduler → 监听未调度的 Pod,对其进行调度,并将调度结果写入 etcd。

4.controller-manager → 检查实际状态与期望状态是否一致,不一致则修复。

5.kubelet → 从 apiserver 获取指令,拉起容器。

6.kube-proxy → 配置 iptables 或 IPVS 规则,实现服务发现和负载均衡。

总结

etcd 是集群大脑:所有状态最终都保存在 etcd。

kube-apiserver 是唯一入口:所有组件都通过它访问集群。

组件间通过 watch + reconciliation 工作:即不断监听 + 纠偏的方式维持系统一致性。