Kubernetes(K8s)架构与组件说明

Kubernetes(K8s)架构与组件说明

K8s 是容器编排平台,整体分为两大块:控制平面(Control Plane,管理面) + 工作节点(Worker Node,业务运行面),所有组件之间通过 API Server 交互,使用 etcd 存储集群状态。

一句话理解:控制平面负责做决策、调度;Node 节点负责真正跑容器。

一、控制平面组件(Master 节点组件)

控制平面是集群大脑,可以部署在单节点或者多节点高可用集群。

1. kube-apiserver

  • 核心入口,整个集群唯一的 API 网关,所有组件、kubectl、客户端都要访问它。
  • 认证、鉴权、准入控制;提供 REST API,读写集群资源(Pod/Deployment/Service 等)。
  • 唯一可以读写 etcd 的组件。

2. etcd

  • 分布式键值数据库,集群所有状态数据的存储。
  • 保存所有资源对象、集群配置、节点信息。
  • 强一致性,一般部署 3/5 个实例做高可用。

3. kube-scheduler 调度器

  • 监听新创建、未绑定节点的 Pod。
  • 根据资源、亲和性、污点容忍、策略,选择最合适的 Node 节点,把 Pod 绑定到节点上。

只做选择,不直接创建容器。

4. kube-controller-manager 控制器管理器

里面包含多个控制器,循环调谐(reconcile),持续让集群实际状态 = 用户期望状态:

  • NodeController:节点状态监控,节点宕机处理
  • ReplicationController:保证副本数量
  • Deployment/StatefulSet 等控制器都由它管理
  • ServiceAccount & Token 控制器

5. cloud-controller-manager(可选)

对接云厂商 API(阿里云 / 腾讯云 / AWS 等),实现负载均衡、节点路由、存储卷对接。裸金属集群一般不需要。


二、Worker Node 工作节点组件(业务节点)

真正跑容器的服务器,每个 Node 都必须有下面组件:

1. kubelet

  • 节点代理,每个 Node 上的核心代理程序
  • 和 apiserver 通信;接收 Pod 调度指令
  • 管理本机 Pod:创建 / 销毁容器,监控 Pod 状态,上报给控制面
  • 调用容器运行时拉起容器

2. kube-proxy

  • 在每个节点上,维护网络规则,实现 Service 功能。
  • 三种模式:iptables / ipvs / userspace
  • 负责 Service 的负载均衡,转发访问请求到后端 Pod。

3. 容器运行时 Container Runtime

用来真正运行容器,K8s 通过 CRI(容器运行时接口)调用。
常见:containerd(主流)、CRI-O,旧版本 docker。

4. 附加组件(Node 可选)

  • 监控代理、日志采集(prometheus node-exporter、fluentd 等)

三、集群附加组件(Addons,可选,集群能力增强)

不属于核心架构,但生产环境必备:

  1. CoreDNS:集群内部 DNS,Service 名称解析(取代旧的 kube-dns)
  2. Ingress Controller:外部流量进入集群(nginx-ingress、istio 等)
  3. Metrics Server:提供集群资源指标(CPU / 内存,kubectl top依赖)
  4. 存储插件 CSI:外部存储卷挂载
  5. 监控、日志系统

简易数据流

kubectl → apiserver → 写入 etcd → scheduler 选节点 → controller-manager 维护副本 → kubelet 在对应节点调用容器运行时创建 Pod → kube-proxy 配置网络规则。

架构简图文本版

控制平面(Master)
├─ kube-apiserver
├─ etcd
├─ kube-scheduler
└─ kube-controller-manager

Worker Node(多个)
├─ kubelet
├─ kube-proxy
└─ Container Runtime(containerd)
posted @ 2026-09-19 21:42  JacobJacob  阅读(11)  评论(0)    收藏  举报