Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Kubernetes 核心组件

官方文档:Kubernetes 组件

Kubernetes 核心组件功能介绍

  1. 控制平面组件(Control Plane)
  2. 节点组件(Node Components)
  3. 网络组件(CNI / DNS)
  4. 扩展组件(附常见)

✅ 1. 控制平面组件(Control Plane Components)

主要职责

  • 对外接口:提供统一的API访问入口(API Server)。
  • 管理集群状态:接收用户操作(通过API Server),监控集群变化,确保实际状态符合期望状态(Controller Manager)。
  • 资源调度:将 Pod(工作负载)智能地分配到合适的 Worker Node 上(Scheduler)。
  • 数据存储:存储所有集群配置和状态数据(etcd)。

🟦 1. kube-apiserver(API 服务器)

👉 整个 Kubernetes 的中心,中枢神经,所有组件交互都经过它。

功能

  • 所有 kubectl / API 调用的入口
  • 认证、鉴权、审计
  • 所有对象的 读写、校验
  • 数据存入 etcd
  • Watch 机制:给控制器 & kubelet 等提供资源变更事件

特点

  • 只有它可直接访问 etcd
  • 无状态,可横向扩容(HA 模式)
  • 提供 REST API

🟦 2. kube-controller-manager(控制器管理器)

👉 运行所有控制循环(Control Loop),确保实际状态 -> 期望状态

包含的控制器(部分)

  • Node Controller:节点上下线检测
  • Deployment Controller:扩缩容、副本管理
  • ReplicaSet Controller
  • Job Controller
  • EndpointSlice Controller
  • Service Account Controller
  • PVC / PV 绑定控制器
  • Namespace 控制器

总结一句话

➡️ k8s 中所有 “自动修复 / 自动创建 / 自动更新” 的逻辑都来自它。

🟦 3. kube-scheduler(调度器)

👉 负责 Pod 的调度决策(Pod 分配到哪个节点上)

核心能力

  • 过滤(Filter):先筛掉不符合条件的节点(资源不足、污点不匹配等)
  • 打分(Score):给剩余节点评分(利用率、拓扑、亲和性)
  • 绑定(Bind):把 Pod 绑定到节点

特性

  • 支持自定义调度策略、调度框架(plugins)
  • 支持多调度器

🟦 4. etcd(键值数据库)

👉 存储 Kubernetes 所有状态(配置、节点、Pod、Service)。

特点:

  • 强一致性、分布式数据库(Raft 协议)
  • 需要三节点或五节点集群保证可靠性
  • 所有 control-plane 组件依赖它

✅ 2. 节点组件(Node Components)

🟩 1. kubelet

👉 每个 node 的核心代理,负责 Pod 生命周期。

功能

  • 接收来自 scheduler 分配的 Pod
  • 通过容器运行时(containerd/cri-o)启动容器
  • 健康检查(liveness / readiness / startup)
  • 日志 & 指标上报
  • 节点状态上报给 API server

特点

  • 管理被 API 分配到该节点的 Pod
  • 能执行 CRI(容器运行时接口)

🟩 2. kube-proxy(节点网络代理,IPTables/IPVS)

👉 负责 Service 负载均衡实现(clusterIP / nodePort)

模式

模式 描述 优点 缺点
iptables 利用 NAT 表实现转发 性能稳定 规则多时变慢
IPVS Linux IP Virtual Server 性能更高 需要内核模块

功能

  • 维护 Service -> EndpointSlice 的转发表
  • 负责 nodePort 实现
  • 提供 round-robin、最少连接等策略(IPVS 模式)

⚠️ 若启用 Calico eBPF -> 部分 iptables/Service 转发由 eBPF 接管,可关闭 kube-proxy。

🟩 3. Container Runtime(必须是 CRI)

管理容器生命周期 (创建、启动、停止、销毁) 和提供隔离环境 (资源、网络、文件系统) 的核心软件组件,是容器技术的基础引擎,常见如 Docker、containerd、CRI-O。它负责将镜像运行为实际的隔离进程。

容器运行时的主要功能

  • 生命周期管理: 创建、启动、停止、删除容器实例。
  • 资源隔离与管理: 利用操作系统内核特性 (如 namespace, cgroups) 实现 CPU、内存、磁盘等资源的限制和隔离。
  • 文件系统管理: 将容器镜像挂载为容器的文件系统。
  • 安全与隔离: 确保容器间、容器与宿主机间的安全隔离。

常见容器运行时类型

  • 高级运行时 (High-Level): 管理整个生命周期和镜像,如 containerd、Docker Engine。
  • 低级运行时 (Low-Level): 只负责启动和运行 OCI (Open Container Initiative) 标准的容器进程,如 runc。
  • Kubernetes CRI: Kubernetes 定义的接口 (Container Runtime Interface),允许 K8s 使用不同的高级运行时(如 containerd, CRI-O)。

K8S 1.33 仅支持:

  • containerd
  • CRI-O

Docker 已长期不支持。

✅ 3. 网络组件

🟧 1. CoreDNS(集群 DNS 服务)

👉 Kubernetes 中的 DNS 服务,解析 Service 和 Pod 名称。

功能

  • Service DNS -> ClusterIP
  • Pod FQDN 解析
  • 外部域名转发(forwarders)
  • 可扩展插件(rewrite、cache、hosts 等)

特性

  • 高可用(Deployment + autoscaler)
  • 替代老旧的 kube-dns

🟧 2. Calico(CNI 与 NetworkPolicy 实现)

👉 提供 Pod 网络、网络策略、安全、路由、BGP、eBPF 等能力。

常见模式

模式 技术 优点 缺点
eBPF(推荐) 完全取代 kube-proxy 高性能 要求内核≥ 5.3
IPIP 简单易用 封包开销大
VXLAN overlay 网络 较通用 效率略低
BGP 节点直连 性能最佳 配置复杂

功能

  • CNI(分配 Pod IP)
  • NetworkPolicy(允许/拒绝流量)
  • Pod 路由(Linux 内核路由表)
  • 也可提供服务负载均衡(eBPF)

✅ 4. 其它扩展组件(常见)

🔹 kube-controller-manager 相关扩展

  • cloud-controller-manager(云厂商)
  • ingress-controller(Nginx、Traefik)
  • metrics-server(HPA 依赖)
  • cluster-autoscaler(自动扩容节点)

🔹 kubelet 相关扩展

  • Device Plugin(GPU / FPGA)
  • CSI 插件(存储)

🔹 网络相关

  • Cilium(eBPF CNI)
  • kube-router(BGP CNI)

⭐ 最终总结(一句话记忆)

组件 职责
kube-apiserver 整个系统的入口 & 状态变更中心
etcd 保存所有状态
kube-controller-manager “确保状态达成”的自动化大脑
kube-scheduler 决定 Pod 运行在哪
kubelet 管理节点上的 Pod
kube-proxy Service 转发(或被 eBPF 替代)
CoreDNS DNS 解析
Calico Pod 网络/路由/NetworkPolicy、eBPF 网络