目录

一、k8s集群架构图

1.1 k8s集群组件图(源于k8s官方文档)

1.2 k8s集群与组件层级关系图

二、k8s集群架构(详细版)

2.1 控制平面(Control Plane):集群的 “大脑”

(1)API Server(kube-apiserver)

(2)etcd

(3)Scheduler(kube-scheduler)

(4)Controller Manager(kube-controller-manager)

(5) Cloud Controller Manager(可选)

2.2 节点组件(Node Components):工作节点的 “基础设施”

(1)kubelet

(2) kube-proxy

(3) 容器运行时(Container Runtime)

(4) CNI 网络插件(容器网络接口)

(5) CSI 节点插件(可选,容器存储接口)

2.3 附加组件:扩展集群功能的 “支撑系统”

(1)服务网格(Service Mesh)

(2) 可观测性系统

(3)Ingress 控制器

(4)命令行工具与 UI

(5)批处理与 CI/CD 组件

总结


Kubernetes(k8s)集群的架构是一个多层次协同的系统,核心由控制平面节点组件附加组件构成,各部分分工明确又紧密协作,共同支撑集群的完整功能。

ps:要理解k8s集群架构,首先需要明白k8s中的Node和Pod(在【Kubernetes】2-1 中,会详细讲解k8s中的Node和Pod)

一、k8s集群架构图

1.1 k8s集群组件图(源于k8s官方文档)

1.2 k8s集群与组件层级关系图

Kubernetes 集群由一个控制平面一组用于运行容器化应用的工作机器组成(Master-Worker架构):

Master-Node负责管理整个集群(管理),Worker-Node负责运行应用程序和服务(干活);

在生产环境中,控制平面通常跨多台计算机运行,而一个集群通常运行多个节点,以提供容错和高可用。

二、k8s集群架构(详细版)

2.1 控制平面(Control Plane):集群的 “大脑”

控制平面负责全局决策(如调度、扩缩容、自愈),是集群的核心管理中枢,核心组件包括:

(1)API Server(kube-apiserver)

  • 作用:集群的 “前端网关”,暴露 Kubernetes API(接收 kubectl 命令、UI 或第三方系统的请求),负责认证、授权、准入控制,并将所有资源状态持久化到 etcd。
  • 特点:唯一与 etcd 直接交互的组件;支持水平扩展(多副本部署);可通过自定义 API 扩展功能。

(2)etcd

  • 作用:分布式键值存储,保存集群的所有资源状态(如 Pod、Node、Service 的配置与运行状态)。
  • 特点:基于 Raft 协议保证强一致性;生产环境需多节点集群部署(避免单点故障);支持快照备份与恢复。

(3)Scheduler(kube-scheduler)

  • 作用:为新创建的 Pod 选择合适的 Node,基于资源需求(CPU / 内存)、亲和性 / 反亲和性污点与容忍度等策略。
  • 特点:通过 “过滤(Predicates)+ 打分(Priorities)” 算法选择最优节点;支持自定义调度插件。

(4)Controller Manager(kube-controller-manager)

  • 作用:运行各类控制器,持续对比集群 “期望状态” 与 “实际状态”,自动修复偏差。
  • 核心子控制器:
    • Endpoint 控制器:维护 Service 与 Pod 的关联(自动更新 Endpoints 对象)。
    • Node 控制器:监控 Node 健康状态,标记故障节点并驱逐其上的 Pod;
    • ReplicaSet 控制器:确保 Pod 副本数符合预期;

(5) Cloud Controller Manager(可选)

  • 作用:对接云服务商(如 AWS、阿里云)的基础设施,管理负载均衡器(Service 类为 LoadBalancer 时)、存储卷(如云盘挂载)、节点生命周期(如自动发现新节点)。
  • 场景:仅在云环境中需要,自建集群可省略。

2.2 节点组件(Node Components):工作节点的 “基础设施”

节点组件是运行在每个工作节点(Worker Node)上的核心进程,负责管理本地 Pod、与控制平面通信、实现网络 / 存储功能,是 Pod 运行的基础:

(1)kubelet

  • 作用:节点的 “管家”,是控制平面与节点之间的 “桥梁”,负责管理节点上的 Pod 生命周期
  • 核心功能:
    • 管理 Pod 与节点的存储卷挂载(如 PV/PVC 对应的本地路径)。
    • 向控制平面上报节点状态(如资源使用率、是否 Ready)和 Pod 状态(如 Running、Pending);
    • 执行 Pod 的健康检查(Liveness Probe、Readiness Probe、Startup Probe),异常时按重启策略处理;
    • 监听 API Server 下发的 Pod 调度指令,调用容器运行时启动 / 停止 Pod 中的容器;
    • 运行方式:以系统服务(如 systemd 服务)形式运行,节点启动时优先启动(需先于所有 Pod)。

(2) kube-proxy

  • 作用:实现 Service 的网络代理功能,确保 Pod 之间、外部与 Pod 之间的通信。
  • 核心功能:
    • 实现 NodePort 类型 Service 的端口映射(节点端口→Service 端口)。
    • 支持 Service 负载均衡(默认轮询),自动剔除不健康的 Pod(基于 Endpoints 状态);
    • 维护节点上的网络规则(如 iptables 或 ipvs),将 Service 的虚拟 IP(ClusterIP)流量转发到后端 Pod;
    • 运行方式:通常以 DaemonSet 形式部署为 Pod(每个节点一个副本),依赖节点网络配置。

(3) 容器运行时(Container Runtime)

  • 作用:负责容器的实际创建、运行、销毁,是 Pod 中容器的 “运行引擎”。
  • 常见实现:
    • Docker:需配合 cri-dockerd 适配器(因 Docker 本身不直接支持 CRI)。
    • CRI-O:专为 Kubernetes 设计的轻量级运行时,直接兼容 CRI;
    • containerd:Kubernetes 推荐的默认运行时,轻量且符合 CRI(容器运行时接口);
    • 核心功能:接收 kubelet 指令(通过 CRI 接口),拉取镜像、创建容器(调用底层 runc),实现资源隔离(CPU / 内存限制)。
    • 运行方式:以系统服务(如 containerd.service)形式运行,直接与操作系统内核交互(如通过 cgroups 限制资源)。

(4) CNI 网络插件(容器网络接口)

  • 作用:为 Pod 配置网络(分配 IP、设置路由),实现跨节点 Pod 通信,是 Kubernetes 网络模型的核心。
  • 常见方案:
    • Cilium:基于 eBPF 的高性能网络,支持 L7 流量控制和服务网格功能。
    • Flannel:简单的 overlay 网络(如 VXLAN),适合入门场景;
    • Calico:基于 BGP 的三层网络,支持网络策略(NetworkPolicy),性能优异;
    • 核心功能:为每个 Pod 分配唯一 IP(从节点的 PodCIDR 网段),配置 Pod 与节点的网络链路(如 veth 对),实现跨节点通信(隧道或路由)。
    • 运行方式:通常以 DaemonSet 形式部署(如 calico-node Pod),由 kubelet 通过 /etc/cni/net.d 配置文件调用。

(5) CSI 节点插件(可选,容器存储接口)

  • 作用:配合控制平面的 CSI 控制器,实现存储卷在节点上的挂载与管理,为 Pod 提供持久化存储。
  • 核心功能:将远程存储(如 Ceph、云盘)或本地存储(如 hostPath)挂载到 Pod 的挂载点,处理卷的格式化、权限设置。
  • 运行方式:以 DaemonSet 形式部署(如 csi-node-driver),每个节点一个副本,与 kubelet 和容器运行时协同工作。

2.3 附加组件:扩展集群功能的 “支撑系统”

这些组件负责网络通信、存储管理、流量路由、监控告警等 “支撑性” 工作,是集群功能完整的关键:

(1)服务网格(Service Mesh)

  • 作用:管理服务间的通信(流量路由、熔断、限流、可观测性),无需修改业务代码。
  • 代表方案:Istio(通过 Sidecar 代理注入 Pod,实现微服务治理)。

(2) 可观测性系统

  • 监控

    • Prometheus:采集节点、Pod、Service 的 metrics(如 CPU 使用率、请求延迟);
    • Grafana:可视化监控指标,生成大盘。
  • 日志

    • Fluentd + Elasticsearch + Kibana(EFK):采集 Pod 日志,支持检索与分析;
    • Loki:轻量级日志系统,与 Prometheus 无缝集成。
  • 告警

    • Alertmanager:基于 Prometheus 规则发送告警(邮件、Slack 等)。

(3)Ingress 控制器

  • 作用:统一管理外部流量入口,通过域名路由到不同 Service。
  • 常见方案:Nginx Ingress ControllerHAProxy IngressTraefik

(4)命令行工具与 UI

  • kubectl:官方命令行工具,与 API Server 交互;
  • Kubernetes Dashboard:Web 界面,可视化管理集群(需单独部署)。

(5)批处理与 CI/CD 组件

  • Job/CronJob:管理一次性或定时任务(如数据备份、CI 构建);
  • ArgoCD/FluxCD:实现 GitOps 风格的持续部署(自动同步代码仓库与集群状态)。

总结

Kubernetes 集群的架构是 “核心 + 扩展” 的协同体系:

  • 控制平面(API Server、etcd、Scheduler 等)是 “决策中枢”,负责全局管理与调度;
  • 节点组件(kubelet、kube-proxy、容器运行时等)是 “执行载体”,支撑 Pod 运行与节点级资源管理;
  • 附加组件(服务网格、可观测性系统等)是 “功能扩展”,增强集群的网络、存储、运维能力。

三者协同工作,使 Kubernetes 成为一个功能完整的 “分布式系统运行框架”,能够支撑从简单应用到复杂微服务的全生命周期管理。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐