这是 Kubernetes(K8s)集群架构 图,展示了 Kubernetes 集群的核心组件及其交互关系,可分为 ** 控制平面(Control Plane)工作节点(Node)** 两大部分,同时还涉及与云服务提供商的交互。下面详细拆解各部分:

一、控制平面(Control Plane):集群的 “大脑”,负责全局决策与管理

控制平面组件保障集群始终处于期望的状态(比如调度 Pod、维护副本数量等)。

  • etcd
    是一个分布式键值存储数据库,作为 Kubernetes 的集群状态 “单一事实源”。它存储了集群的所有核心配置、资源对象(如 Pod、Service 等的定义)以及运行时状态。控制平面的其他组件(如 kube - api - server)会从 etcd 读取数据,也会将变更写入 etcd。

  • kube - api - server
    是集群的 “入口网关”,所有对集群的操作(无论是用户通过 kubectl 发起,还是集群内部组件间的通信)都必须经过它。它提供了 RESTful API 接口,负责校验请求、处理数据,并与 etcd 交互(读取或写入集群状态),同时也作为其他控制平面组件(如 scheduler、controller manager)的通信枢纽。

  • scheduler(kube - scheduler)
    负责 ** Pod 的调度决策 **。当有新的 Pod 需要运行(或旧 Pod 重建)时,scheduler 会基于一系列策略(如资源需求、节点亲和性、负载均衡等),从集群的工作节点中为 Pod 挑选最适合的 “目标节点”,然后将调度结果通过 kube - api - server 写入 etcd。

  • Controller Manager(kube - controller - manager)
    由多个 “控制器(Controller)” 组成,每个控制器负责一类集群资源的闭环管理(即 “控制循环”)。例如:

    • ReplicaSet 控制器:确保指定的 Pod 副本数量始终符合期望(比如用户要求某个应用运行 3 个副本,若有副本异常退出,它会触发重建)。
    • Node 控制器:监控节点健康状态,若节点故障,会协调后续的 Pod 迁移等操作。
      这些控制器通过 kube - api - server 监听资源变化,然后执行相应的调节动作,最终让集群状态匹配用户的期望。
  • cloud - controller - manager
    是 Kubernetes 与 ** 云服务提供商(Cloud Provider)** 的 “中间层”。当集群运行在公有云环境(如 AWS、Azure、阿里云等)时,它负责对接云厂商的 API(即图中的 CLOUD PROVIDER API),实现与云服务的联动。比如:

    • 管理云平台的负载均衡器(为 Service 分配公网 IP 等)。
    • 监控云平台提供的节点状态,同步到 Kubernetes 集群中。
    • 管理云存储卷(如为 Pod 挂载云硬盘)等。

二、工作节点(Node):集群的 “算力载体”,运行实际工作负载

工作节点是承载应用的实体,每个节点可看作一台服务器(物理机或虚拟机)。

  • Node(Node 1、Node 2)
    是集群的工作节点,每个节点上运行着支撑 Pod 运行的组件,以及实际的业务 Pod。

  • kubelet
    每个节点的 “管家”,直接与节点交互。它通过 kube - api - server 监听自己负责节点上的 Pod 调度指令,然后执行 Pod 的生命周期管理:

    • 拉取 Pod 对应的容器镜像。
    • 启动 / 停止容器。
    • 监控容器(及 Pod)的健康状态,并向 kube - api - server 汇报(比如 Pod 是否运行正常)。
      此外,它还负责维护节点的资源状态,让控制平面能准确掌握节点的可用资源。
  • kube - proxy
    是每个节点上的网络代理组件,负责 Pod 的网络通信与服务(Service)暴露。它的核心作用是:

    • 实现 Service 的负载均衡:当多个 Pod 对应一个 Service 时,kube - proxy 会将请求分发给不同的 Pod。
    • 维护节点上的网络规则:确保 Pod 之间、Pod 与外部的网络通信符合 Kubernetes 的网络模型(如通过 iptables 或 eBPF 等技术配置网络转发规则)。
  • Pod
    是 Kubernetes 中最小的可部署单元,一个 Pod 可包含一个或多个紧密协作的容器(容器共享网络、存储等资源)。Pod 是应用在集群中的 “运行实例”,kubelet 负责 Pod 在节点上的启停与监控。

  • CRI(Container Runtime Interface)
    是 Kubernetes 与 ** 容器运行时(如 Docker、containerd、CRI - O 等)** 之间的 “接口层”。kubelet 通过 CRI 调用底层的容器运行时,来完成容器的创建、启动、停止等操作(比如 kubelet 要启动一个 Pod 里的容器,就通过 CRI 告诉容器运行时 “拉取镜像并启动容器”)。

三、云服务提供商交互(CLOUD PROVIDER API)

当集群部署在公有云环境时,cloud - controller - manager 会与云厂商的 API 交互,借用云平台的基础设施能力,让 Kubernetes 能更好地利用云服务(如负载均衡、存储、节点管理等),实现 “云原生” 的深度整合。

Logo

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

更多推荐