Kubernetes 架构与各组件作用
一、整体架构划分
K8s 整体分为两大核心平面:
- 控制平面(Control Plane / 管理节点):负责集群调度、决策、管控、数据存储,不跑业务 Pod
- 数据平面(Node 工作节点):负责运行业务容器,执行控制平面下发的所有指令
核心设计:控制平面做决策,工作节点做执行,所有操作统一经由 kube-apiserver 收口。
二、控制平面 五大核心组件
1. kube-apiserver
核心定位:集群唯一入口、所有通信中枢
- 整个 K8s 集群的 API 网关,所有组件、客户端全部只和它交互
- 提供 RESTful API,接收:kubectl、kubelet、控制器、Scheduler 的请求
- 依次执行:认证、鉴权、准入控制三层安全校验
- 负责资源数据读写,唯一操作 etcd 的组件
- 采用水平扩展,可多实例部署,保证高可用
- 无状态设计,所有集群数据持久化存在 etcd
一句话:集群大门,所有增删改查、组件通信必经之路,统一鉴权管控。
2. etcd
核心定位:集群分布式键值数据库,唯一数据存储
- 存储集群所有资源对象数据:Node、Pod、Deployment、Service、Secret、ConfigMap 等
- 存储集群状态、配置、元数据,强一致性、高可用
- 仅允许 apiserver 访问,其他组件禁止直连
- 生产必须集群化部署(3/5 节点),定时快照备份
一句话:K8s 的 “数据库”,存集群所有配置和状态数据。
3. kube-scheduler
核心定位:Pod 调度决策组件
- 监听 apiserver,获取未绑定节点的新建 Pod
- 根据节点资源剩余、亲和性、污点容忍、节点标签、资源限制等策略
- 筛选最优健康节点,将 Pod 与 Node 进行绑定
- 只负责选节点,不负责创建容器、不管理生命周期
一句话:给 Pod 挑选最合适的工作节点,纯决策组件。
4. kube-controller-manager
核心定位:集群自愈 & 循环控制器合集
内部包含多个控制器,常驻循环监听期望状态与实际状态差异,持续调谐:
- 副本控制器:保证 Deployment/RS 指定副本数,Pod 挂了自动重建
- 节点控制器:检测节点宕机、失联,自动驱逐该节点 Pod
- 服务控制器:管理 Service、外部负载均衡映射
- 命名空间 / 资源配额控制器:限制租户资源、回收垃圾资源
- 垃圾回收控制器:清理过期副本、废弃资源
一句话:集群 “自愈大脑”,保证资源永远维持用户定义的期望状态。
5. cloud-controller-manager(CCM,可选)
定位:云厂商专属控制器
- 解耦 K8s 与公有云厂商代码
- 管理云负载均衡、云硬盘、节点生命周期
- 物理机 / 私有化环境一般不部署
三、工作节点 三大核心组件(业务运行层)
1. kubelet(节点核心代理)
定位:单个节点的管家、执行者
- 每个 Node 节点必装,节点级核心进程
- 通过 Watch 长连接监听 apiserver,获取分配给当前节点的 Pod 清单
- 依次调用三大标准接口落地业务:
- CSI:存储卷挂载 / 卸载
- CNI:Pod 网络配置、IP 分配
- CRI:容器创建、启动、停止、销毁、镜像拉取
- 执行容器探针:存活探针、就绪探针,实现容器自愈
- 定时上报节点状态、Pod 状态、资源使用情况到 apiserver
- 受 RBAC 权限限制,仅允许管理本机资源,保证集群安全
- 额外管理静态 Pod(本地清单自主运行)
一句话:接收控制平面指令,在本机落地运行容器,上报状态,干活的执行者。
2. kube-proxy
定位:集群网络流量转发、Service 实现核心
- 运行在所有工作节点
- 监听 Service、Endpoint 资源变化
- 通过 iptables/ipvs 模式,实现:
- Service 集群内部负载均衡
- Pod 访问转发、端口映射
- 内外网流量代理、会话保持
- 保证集群内 Service 统一访问入口,屏蔽 Pod IP 变化
一句话:负责 Service 流量转发与负载均衡,打通集群内部网络访问。
3. 容器运行时(CRI 实现)
代表:containerd(生产主流)、CRI-O
- 遵循 CRI 标准接口,被 kubelet 调用
- 负责镜像管理、容器生命周期、底层隔离(Namespace/Cgroup)
四、三大外置标准插件(完整集群必备)
1. CNI 网络插件
Calico、Flannel、Cilium
- 实现 Pod 跨节点通信、网络策略、隔离
2. CSI 存储插件
Ceph CSI、NAS CSI、本地存储 CSI
- 实现 PV/PVC 持久化存储挂载
3. 附加组件(生产必装)
- CoreDNS:集群内部 DNS 解析,服务发现核心
- Ingress Controller:七层反向代理,对外暴露服务
- Prometheus:监控告警
- Helm:应用包管理
五、完整工作流程
- 用户通过 kubectl 提交 Deployment 配置 → 请求进入 apiserver
- apiserver 认证鉴权、准入控制后,数据存入 etcd
- kube-scheduler 监听到未调度 Pod,选择合适工作节点并绑定
- 目标节点 kubelet 监听 apiserver 变更,拿到 Pod 配置
- kubelet 调用 CSI 挂载存储 → 调用 CNI 配置 Pod 网络
- kubelet 调用 CRI/containerd 创建 pause 基础容器 + 业务容器
- kube-proxy 同步 Service 规则,实现服务访问与负载均衡
- controller-manager 持续巡检,节点 / 容器异常自动自愈重建
六、超精简
K8s 分为控制平面和工作节点:
- 控制平面:
- apiserver:集群 API 入口,统一认证鉴权;
- etcd:集群数据存储;
- scheduler:负责 Pod 节点调度;
- controller-manager:各类控制器,保障集群自愈。
- 工作节点:
- kubelet:接收指令,管理本机 Pod 与容器生命周期;
- kube-proxy:实现 Service 流量转发与负载均衡;
- 容器运行时:负责容器底层创建与管理。外加 CoreDNS、CNI、CSI 等插件,共同组成完整云原生集群架构。
正文完