00 首页

Kubernetes 架构图解

Kubernetes 把期望状态保存为 API 对象,多个控制循环持续推动实际状态靠近它。控制面决定与记录,节点负责运行容器;应用数据包通常不经过 API server。
版本:Kubernetes v1.37.2;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。

从边界到模块

specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { user = actor '用户 / kubectl' traffic = actor '业务客户端' app = system 'Kubernetes 集群' { api = component 'kube-apiserver' etcd = storage 'etcd' scheduler = component 'kube-scheduler' controller = component 'kube-controller-manager' kubelet = component '节点 kubelet' runtime = component '容器运行时 / CNI' proxy = component 'Service 数据面' pod = component '业务 Pod' } user -> app.api '声明与查询对象' app.api -> app.etcd '持久化 API 数据' app.scheduler -> app.api '观察未调度 Pod / 写绑定' app.controller -> app.api '观察与调和' app.kubelet -> app.api '观察绑定 / 回报状态' app.kubelet -> app.runtime 'CRI 生命周期管理' app.runtime -> app.pod '创建容器与网络' traffic -> app.proxy 'Service 地址访问' app.proxy -> app.pod '转发至后端' } views { view index { title '01 · 系统边界' include user, traffic, app autoLayout LeftRight } view modules of app { title '02 · 模块与数据流' include app.*, user, traffic autoLayout LeftRight } }

阅读方法

先看“系统边界”,再切换“模块与数据流”或从系统节点进入下钻视图。箭头表示交互或数据流,不代表全部为同步调用;每条核心链路页提供独立可读的时序图。可在图中缩放、平移和切换视图。

四条核心链路

  • 控制平面总览:API server 是对象入口,etcd 是持久存储;调度器与控制器通过 API 协作,不直接修改 etcd。
  • 创建 Pod 的全链路:直接创建 Pod 后,调度器为它选节点,节点 kubelet 再驱动运行时落地;API 返回成功与 Ready 之间还有多段工作。
  • Service 网络转发:Service 把稳定的访问地址映射到变化的 EndpointSlice;节点数据面执行转发,控制面只负责下发规则所需的对象。
  • 控制器调和循环:控制器反复比较期望与实际状态,按对象 key 入队再执行幂等调和;事件会合并,可靠性来自重新观察。

官方资料