Skip to content

架构概览

本节帮助你理解 Kubernetes 集群的整体架构,了解各个组件如何协作。

前置知识

💡 阅读本章前,请确保已完成:

K8s 集群架构

一个 Kubernetes 集群由两部分组成:

  1. 控制平面(Control Plane):集群的"大脑",负责决策和管理
  2. 工作节点(Worker Node):集群的"手脚",负责实际运行容器

控制平面组件

控制平面负责集群的全局决策和事件响应。

1. API Server(API 服务器)

💡 类比:餐厅的前台接待,所有请求都要经过它

API Server(API 服务器,K8s 的 RESTful API 入口)是控制平面的前端,负责:

  • 接收所有的 API 请求
  • 验证请求的合法性
  • 处理请求并更新 etcd
bash
# 所有 kubectl 命令都是通过 API Server 执行的
kubectl get pods  # 实际上是调用 API Server 的 /api/v1/pods

2. etcd(数据存储)

💡 类比:餐厅的账本,记录所有订单和员工信息

etcd(分布式键值存储,K8s 的"数据库")负责:

  • 存储集群的所有配置数据
  • 存储集群的当前状态
  • 提供可靠的分布式存储

3. Scheduler(调度器)

💡 类比:餐厅的排班经理,决定谁干什么活

Scheduler(调度器,决定 Pod 运行在哪个节点)负责:

  • 监听新创建但未分配节点的 Pod
  • 根据资源需求、策略限制选择最优节点
  • 将调度决策告知 API Server

4. Controller Manager(控制器管理器)

💡 类比:餐厅的各部门主管

Controller Manager(控制器管理器,运行各种控制器)包含多个控制器:

控制器职责
Node Controller监控节点状态,节点故障时响应
Replication Controller确保 Pod 副本数符合预期
Endpoints Controller维护 Service 和 Pod 的关联
Service Account Controller管理命名空间的默认账号

工作节点组件

工作节点运行实际的应用负载。

1. Kubelet(节点代理)

💡 类比:每个厨师身边的助手,确保厨师按要求工作

Kubelet(节点代理,确保容器在 Pod 中运行)负责:

  • 接收 PodSpec
  • 确保容器按规范运行
  • 汇报节点和 Pod 状态

2. Kube-proxy(网络代理)

💡 类比:餐厅的传菜员,把菜送到正确的桌子

Kube-proxy(网络代理,维护节点上的网络规则)负责:

  • 维护网络规则
  • 实现 Service 的负载均衡
  • 转发网络流量

3. Container Runtime(容器运行时)

💡 类比:厨房的灶台,实际做菜的地方

Container Runtime(容器运行时,如 containerd、Docker)负责:

  • 拉取容器镜像
  • 创建和运行容器
  • 管理容器生命周期

组件协作流程

当你执行 kubectl run nginx --image=nginx 时:

核心概念映射

概念作用类比
Cluster整个 K8s 系统整个餐厅
Control Plane管理决策餐厅管理层
Node运行容器的机器厨房工作台
Pod最小部署单元一个菜品订单

小结

  • K8s 集群由控制平面工作节点组成
  • 控制平面负责全局决策:API Server、etcd、Scheduler、Controller Manager
  • 工作节点负责运行负载:Kubelet、Kube-proxy、Container Runtime
  • 所有操作都通过 API Server 进行,数据存储在 etcd

下一步

了解了整体架构后,让我们深入学习 K8s 中最重要的概念——Pod。

下一节:Pod 详解

学习文档整合站点