当很多人第一次接触 Kubernetes 架构图时,都会被那张“控制平面 + Worker 节点”的经典结构图震住。kube-apiserver、etcd、scheduler、controller-manager,再加上 kubelet、container runtime、kube-proxy,看上去像一套精密到几乎无法拆解的系统。
但真正让人困惑的,不是组件数量,而是认知层次。
理解架构图,并不等于理解架构决策。
控制平面:它不是“大脑”,而是协调者
控制平面包括:
- kube-apiserver
- etcd
- kube-scheduler
- kube-controller-manager
从官方描述看,它像“大脑”。但更准确的说法是——它是“状态协调器”。
kube-apiserver 是入口,所有操作通过 API 进入。
etcd 存储整个集群状态,是唯一真相来源。
scheduler 决定 Pod 放在哪里。
controller-manager 保持期望状态。
支持 Kubernetes 的人会说:“这是一套声明式自愈系统。”
怀疑者会说:“这是一套高度依赖 etcd 的分布式状态机。”
两种说法都对。
控制平面不是万能,它依赖健康的 etcd、稳定的网络和足够的资源。
一旦控制平面抖动,所有应用都会出现连锁反应。
这也是为什么成熟团队监控优先级永远从 etcd 延迟和 API server QPS 开始。
Worker 节点:你真正“花钱”的地方
一个很现实的点——Worker 节点是你真正为之付费的计算资源。
节点包含:
- kubelet
- container runtime(containerd / CRI-O 等)
- kube-proxy
kubelet 负责和控制平面沟通,确保 Pod 正确运行。
container runtime 负责真正拉镜像、起容器。
kube-proxy 维护网络规则。
听起来很基础,但企业环境中最大成本往往出在这里——节点利用率。
有人会疯狂增加节点保证“安全余量”。
有人则极端压榨资源导致 OOM。
资源 requests 和 limits、HPA、Cluster Autoscaler 的重要性,这不是理论,而是成本控制的核心。
Kubernetes 的调度能力再聪明,也无法弥补错误的资源声明。
Pod、Deployment、Service:抽象层的真正价值
很多人把 Pod、Deployment、Service 当成“语法结构”。但这些组件共同构成了分布式系统的基础单元。
- Pod 是最小运行单元
- Deployment 定义期望副本数与更新策略
- Service 提供稳定访问入口
- PersistentVolume 让数据脱离 Pod 生命周期
这里的关键不是概念,而是生命周期解耦。
Pod 可以随时销毁。
Service 保持地址稳定。
PV 让数据不随 Pod 消失。
这就是 Kubernetes 真正的哲学——解耦运行时与状态。
支持者称之为“云原生设计”。
批评者认为它增加了抽象层,提升了认知负担。
但如果你理解了生命周期分层,很多问题会变得清晰。
组件交互:声明式系统的循环逻辑
典型的组件交互流程是:
- 用户提交 YAML 到 API server
- scheduler 分配节点
- kubelet 拉镜像启动容器
- controller 持续比对当前状态与期望状态
这是一套“持续对齐”的循环机制。
Kubernetes 的强大不在于启动容器,而在于不断纠正偏差。
- Pod 挂了?重建。
- 节点掉线?重调度。
- 副本数不对?自动补齐。
但这种机制也意味着——系统复杂度是常驻的。
当你 debug 时,不是单线程程序,而是多个 controller 在同时行动。
理解这点,是成为成熟平台工程师的分水岭。
高可用与扩展:理论完美,现实妥协
标准的高可用架构包括:
- 多实例控制平面避免单点
- HPA 自动扩容
- Cluster Autoscaler 调整节点数量
- 多可用区部署增强韧性
这些都是标准答案。
但现实问题是——
你是否真的需要多 AZ?
你的流量波动是否值得 autoscaler 频繁伸缩?
你的 etcd 是否正确备份?
支持高度自动化的人强调弹性。
谨慎派则担心复杂度失控。
Kubernetes 的能力远超大多数团队的真实需求。
问题从来不是“能不能”,而是“值不值”。
不变基础设施与微服务原则:听起来优雅,执行很难
不可变基础设施原则、微服务拆分、资源限制与 RBAC 安全控制,这些都是 Kubernetes 架构的理论基石。
但在现实中:
- 很多团队仍然在容器里 SSH。
- 很多镜像没有版本锁定。
- 很多 RBAC 权限过大。
支持者强调“最佳实践”。
实践者则知道落地的阻力。
Kubernetes 并不会自动带来架构成熟度。
它只是提供能力。
是否使用好,取决于组织文化。
真正的架构问题:你是否可以重建整个集群?
当你把架构图读透,最后只剩下一个问题:
如果控制平面全部宕机,你是否可以从 Git 和备份恢复?
如果节点全部替换,你的数据是否安全?
Kubernetes 架构的优雅之处,在于它允许“可重建性”。
但前提是,你做好了 etcd 备份、PV 备份、配置版本化。
架构不是图纸,而是恢复能力。
理解架构,是为了理解风险边界
Kubernetes 架构并不神秘。
Control Plane 管状态,Worker 跑计算。
Controller 持续对齐期望。
真正复杂的,是你如何在组织中管理它,尤其是在运维监控与成本控制方面。