Kubernetes集群架构组件全解

发布时间:2026/7/17 8:52:17

Kubernetes集群架构组件全解 前言Kubernetes简称 K8S是目前业界主流的容器编排引擎核心能力是实现容器化应用的自动化部署、弹性扩缩容、自愈与生命周期管理。想要真正掌握 K8S吃透集群架构与核心组件的职责、协作逻辑是必经之路。本文将从零拆解 K8S 集群的完整架构清晰划分组件边界讲透每个组件的核心作用、工作原理与协作流程无论是入门学习还是面试备考都能作为体系化的参考资料。一、K8S 集群整体架构K8S 采用经典的中心化分布式架构整体划分为两大核心平面所有组件协同工作共同实现集群的声明式控制能力控制平面Control Plane也叫 Master 节点是集群的「大脑」负责集群的全局决策、资源调度、状态管控与 API 暴露不直接运行业务容器。数据平面Data Plane也叫 Worker/Node 节点是集群的「手脚」负责接收控制平面的指令真正运行业务 Pod容器组处理集群网络与流量转发。核心设计理念K8S 的核心是声明式 API 控制循环调谐 Reconcile。用户只需要通过 API 提交「期望状态」集群各个组件会持续监听状态自动将集群实际状态调谐至与期望状态一致这也是 K8S 自愈能力的核心来源。二、控制平面核心组件详解控制平面是集群的管控核心生产环境中建议至少 3 节点高可用部署避免单点故障。其核心组件均运行在 Master 节点上职责划分清晰且所有组件仅通过kube-apiserver通信无直接交互。1. kube-apiserver集群唯一入口与 API 网关kube-apiserver是 K8S 集群的唯一前端入口也是所有组件通信的唯一枢纽更是声明式 API 的核心载体。核心职责暴露 K8S RESTful API处理所有集群操作请求包括 kubectl 命令、控制台操作、组件间调用完成请求的全链路校验身份认证Authentication、权限授权Authorization、准入控制Admission Control唯一能与 etcd 集群直接交互的组件负责集群状态的读写与持久化基于 watch 机制向其他组件推送资源状态变更事件是控制循环的触发核心。关键特性无状态设计支持水平扩容生产环境可多实例部署提升可用性与并发能力。2. etcd集群的唯一状态数据库etcd 是一款高可用的分布式键值KV存储数据库是 K8S 集群唯一的持久化存储组件相当于集群的「心脏」。核心职责持久化存储集群的所有资源对象数据Deployment、Pod、Service、ConfigMap 等与集群状态基于 Raft 一致性协议保证集群数据的强一致性与高可用为 apiserver 提供 watch 能力支撑集群状态的实时变更推送。关键注意点只有 kube-apiserver 有权限直接读写 etcd其他任何组件都不能直接操作 etcd生产环境必须部署 etcd 集群通常 3/5 节点并做好定期数据备份etcd 数据丢失意味着集群状态完全丢失。3. kube-scheduler集群的调度器kube-scheduler是集群的「调度中枢」核心职责是为新创建的、未绑定节点的 Pod选择一个最合适的 Node 节点运行。核心工作流程两步核心调度过滤阶段Predicate遍历所有 Node 节点过滤掉不满足 Pod 运行要求的节点比如资源不足、端口冲突、亲和性 / 反亲和性不匹配、污点容忍度不满足等打分阶段Priority对过滤后的合格节点进行优先级打分综合考虑资源利用率、节点负载、亲和性、数据本地化等维度选择得分最高的节点绑定操作将调度结果写入 apiserver完成 Pod 与 Node 的绑定后续由对应节点的 kubelet 执行 Pod 创建。关键特性支持自定义调度策略、自定义调度器可满足复杂的业务调度需求。4. kube-controller-manager控制器管理器kube-controller-manager是 K8S「声明式控制」的核心实现本质是多个独立控制器的集合每个控制器都是一个独立的控制循环持续监听对应资源的状态完成调谐工作。核心工作逻辑每个控制器持续通过 apiserver 监听资源的「期望状态」与「实际状态」若两者不一致自动执行调谐操作推动实际状态向期望状态对齐。核心内置控制器Node 控制器监控节点状态节点故障时自动执行故障检测与 Pod 驱逐Deployment/ReplicaSet 控制器管理无状态应用的副本数确保 Pod 副本数量与用户声明的一致实现滚动更新、回滚等能力EndpointSlice 控制器为 Service 关联后端 Pod维护服务与 Pod 的网络映射关系ServiceAccount/Token 控制器管理集群账号与访问令牌为新命名空间创建默认账号。关键特性支持控制器的自定义扩展CRDOperator是 K8S 生态扩展的核心能力。5. cloud-controller-manager云控制器管理器cloud-controller-manager简称 CCM是 K8S 与底层云基础设施的解耦层负责对接公有云 / 私有云厂商的 API将集群与云平台的基础设施能力联动。核心职责把 K8S 中与云厂商相关的控制逻辑从主集群中剥离实现云平台适配与集群内核的解耦。核心内置控制器节点控制器同步云服务器的生命周期管理节点的创建、删除与状态同步路由控制器配置云平台的底层网络路由实现 Pod 跨节点网络互通服务控制器对接云平台的负载均衡服务为 LoadBalancer 类型的 Service 自动创建公网 / 内网负载均衡实例卷控制器对接云平台的块存储服务自动创建、挂载云存储卷。关键注意点仅在对接云平台时需要部署纯本地私有集群离线部署无需该组件。三、数据平面Node 节点核心组件详解Node 节点是集群的工作节点集群的所有业务容器都运行在 Node 节点上。每个 Node 节点都必须运行以下 3 个核心组件持续与控制平面通信执行管控指令保障节点与 Pod 的正常运行。1. kubelet节点的核心代理kubelet是运行在每个 Node 节点上的「节点代理」是控制平面在节点上的执行入口也是节点与 Pod 生命周期管理的核心组件。核心职责持续从 kube-apiserver 监听绑定到当前节点的 Pod 清单按照声明要求调用容器运行时创建、启动、停止、销毁容器执行 Pod 的全生命周期健康检查存活探针Liveness Probe、就绪探针Readiness Probe、启动探针Startup Probe根据探针结果执行容器重启、流量摘除等操作持续上报节点的资源状态CPU、内存、磁盘、节点健康状态、Pod 运行状态到 kube-apiserver供调度器与控制器决策管理节点的容器资源、存储卷挂载、容器网络配置保障 Pod 的运行环境符合声明要求。关键特性通过 CRI容器运行时接口与容器运行时解耦不绑定具体的容器 runtime适配所有符合 CRI 规范的容器运行时。2. 容器运行时Container Runtime容器运行时是真正负责运行容器的软件是 Node 节点上容器生命周期的底层执行者符合 K8S CRI容器运行时接口规范。核心职责负责容器的镜像拉取、容器创建 / 启动 / 停止 / 删除、容器资源隔离与限制、容器日志收集等底层操作。主流合规实现containerd目前 K8S 默认的容器运行时轻量、稳定、兼容 OCI 标准是生产环境的首选CRI-O专为 K8S 设计的轻量级容器运行时完全兼容 CRI 规范无冗余功能注意K8S 自 1.24 版本起正式废弃 dockershimDocker 不再作为默认容器运行时若需使用 Docker 需额外适配 CRI 接口。3. kube-proxy节点网络代理kube-proxy是运行在每个 Node 节点上的网络代理是 K8S Service 资源的底层实现者负责集群的服务发现与四层流量负载均衡。核心职责持续从 kube-apiserver 监听 Service 与 EndpointSlice 的变更在节点上维护对应的网络转发规则实现 ClusterIP、NodePort、LoadBalancer 等类型 Service 的流量转发将访问 Service 的流量按照负载均衡策略转发到对应的后端 Pod保障集群内部 Pod 与 Service 之间的网络互通实现跨节点的服务访问。核心转发模式iptables 模式默认模式基于 Linux 内核 iptables 实现规则转发稳定性高适合中小规模集群ipvs 模式基于 Linux 内核 IPVS 模块实现性能更高、负载均衡策略更丰富适合大规模集群上千节点 / 上万 Service。四、集群核心附加组件Addons以下组件并非 K8S 集群的内置核心组件不属于集群启动的必要条件但却是生产环境必备的能力补充也是入门学习必须了解的生态组件。组件名称核心作用CNI 网络插件实现 K8S 集群 Pod 跨节点网络互通K8S 本身不实现网络依赖 CNI 插件主流实现Calico、Flannel、CiliumCoreDNS集群内部 DNS 服务为 Pod 和 Service 提供域名解析是集群服务发现的核心默认随集群部署Ingress Controller集群七层流量入口网关实现 HTTP/HTTPS 域名路由、SSL 终结、流量管控将集群内服务暴露到公网主流实现Nginx Ingress、Traefik、APISIXMetrics Server集群核心指标采集组件采集节点与 Pod 的 CPU、内存使用率为 kubectl top 命令、HPA 弹性扩缩容提供指标支撑PrometheusGrafana集群监控方案实现集群组件、节点、业务应用的全链路指标监控、告警与可视化Loki/ELK Stack集群日志收集与分析方案实现容器日志、组件日志的统一采集、检索与可视化五、核心流程示例一条 kubectl 命令背后的组件协作为了让大家更清晰地理解组件间的联动我们以kubectl create deployment nginx --imagenginx --replicas3为例拆解完整的执行流程用户执行 kubectl 命令kubectl 对请求进行封装发送到 kube-apiserverkube-apiserver 完成请求的认证、授权、准入控制校验通过后将 Deployment 资源写入 etcdkube-controller-manager 中的 Deployment 控制器监听到 Deployment 资源的创建事件对比期望状态创建对应的 ReplicaSet 资源写入 apiserver 并持久化到 etcdReplicaSet 控制器监听到 ReplicaSet 创建事件按照声明的 3 个副本数创建 3 个 Pod 资源写入 apiserver 并持久化到 etcd此时 Pod 处于Pending状态未绑定节点kube-scheduler 监听到未绑定节点的 Pod执行过滤 打分调度为每个 Pod 分配最合适的 Node 节点将调度结果写入 apiserver对应 Node 节点的 kubelet 监听到绑定到自身节点的 Pod调用容器运行时 containerd 拉取 nginx 镜像创建并启动容器同时执行 Pod 的健康检查kubelet 持续上报 Pod 的运行状态到 apiserver更新 Pod 状态为RunningEndpointSlice 控制器监听到 Pod 的就绪状态为对应的 Service若创建更新后端 Endpointkube-proxy 同步更新节点上的网络转发规则完成服务接入。六、核心要点核心边界控制平面负责决策数据平面负责执行所有组件的通信唯一枢纽是 kube-apiserver无跨组件直接通信数据核心etcd 是集群唯一的持久化存储是集群的核心命脉生产环境必须做好高可用与备份设计核心声明式 API 控制循环是 K8S 的灵魂所有的自愈、扩缩容、编排能力都基于该设计实现K8S 集群的架构设计看似复杂实则职责划分非常清晰控制平面的组件各司其职完成集群的全局管控与决策数据平面的组件稳定执行保障业务容器的正常运行与网络互通丰富的生态组件则补齐了生产环境所需的可观测性、网关、安全等能力。掌握了集群架构与组件的核心逻辑就掌握了 K8S 的底层原理。

相关新闻