跳转到内容

Kubernetes组件

来自代码酷

Kubernetes组件[编辑 | 编辑源代码]

Kubernetes(简称K8s)是一个开源的容器编排平台,其核心功能由多个相互协作的组件实现。本页面将详细介绍Kubernetes的核心架构组件及其交互方式。

概述[编辑 | 编辑源代码]

Kubernetes采用主从架构(Master-Worker),包含控制平面(Control Plane)组件和工作节点(Node)组件。所有组件通过API Server进行通信,使用etcd作为集群状态存储。

graph LR A[Control Plane] --> B[API Server] A --> C[Scheduler] A --> D[Controller Manager] A --> E[etcd] F[Node] --> G[kubelet] F --> H[kube-proxy] F --> I[Container Runtime] B <--> G B <--> H

控制平面组件[编辑 | 编辑源代码]

API Server[编辑 | 编辑源代码]

核心通信枢纽,提供RESTful Kubernetes API,是所有集群操作的唯一入口。

# 查看API Server端点
kubectl cluster-info

输出示例:

Kubernetes control plane is running at https://192.168.49.2:8443

Scheduler[编辑 | 编辑源代码]

负责将新创建的Pod分配到合适的节点,决策基于:

  • 资源请求/限制
  • 亲和性/反亲和性规则
  • 数据局部性
  • 节点状态

Controller Manager[编辑 | 编辑源代码]

运行各种控制器进程的守护进程,包括:

  • Node Controller:监控节点状态
  • Replication Controller:维护Pod副本数
  • Endpoint Controller:维护Service与Pod的映射

etcd[编辑 | 编辑源代码]

分布式键值存储,保存整个集群的状态数据。采用Raft一致性算法保证数据一致性。

节点组件[编辑 | 编辑源代码]

kubelet[编辑 | 编辑源代码]

运行在每个工作节点上的"节点代理",负责:

  • 管理Pod生命周期
  • 挂载存储卷
  • 执行健康检查
# 查看节点kubelet状态
systemctl status kubelet

kube-proxy[编辑 | 编辑源代码]

实现Kubernetes Service抽象,通过以下方式维护网络规则:

  • iptables(默认模式)
  • IPVS(高性能模式)
  • userspace(旧模式)

容器运行时[编辑 | 编辑源代码]

实际运行容器的软件,如:

  • containerd
  • CRI-O
  • Docker(已废弃)

插件组件[编辑 | 编辑源代码]

CNI插件[编辑 | 编辑源代码]

实现Pod网络,常见选择:

  • Calico
  • Flannel
  • Weave Net

CSI插件[编辑 | 编辑源代码]

提供持久化存储支持,如:

  • AWS EBS
  • Azure Disk
  • Ceph RBD

组件交互示例[编辑 | 编辑源代码]

当用户创建Deployment时:

sequenceDiagram participant User participant API_Server participant etcd participant Scheduler participant kubelet User->>API_Server: kubectl create deployment API_Server->>etcd: 存储Deployment配置 API_Server->>Controller_Manager: 触发ReplicaSet创建 Controller_Manager->>API_Server: 创建Pod定义 API_Server->>etcd: 存储Pod定义 Scheduler->>API_Server: 监听未调度Pod Scheduler->>API_Server: 绑定Pod到节点 kubelet->>API_Server: 获取分配的Pod kubelet->>Container_Runtime: 启动容器

实际案例[编辑 | 编辑源代码]

电商应用部署场景: 1. API Server接收Deployment创建请求 2. Scheduler将前端Pod分配到高CPU节点 3. kube-proxy为支付服务创建Service VIP 4. kubelet确保库存服务Pod始终保持运行

故障排查提示[编辑 | 编辑源代码]

常见组件问题诊断命令:

# 检查控制平面组件状态
kubectl get componentstatuses

# 查看节点详细信息
kubectl describe node <node-name>

# 检查kubelet日志
journalctl -u kubelet -f

数学基础[编辑 | 编辑源代码]

调度器使用的评分公式示例: score=α×(availableCPUrequestedCPU)+β×(availableMemoryrequestedMemory) 其中αβ为权重系数。

版本变化[编辑 | 编辑源代码]

  • v1.20+:默认容器运行时接口(CRI)改为containerd
  • v1.26+:移除Docker支持
  • v1.29+:引入结构化配置管理

本内容最后更新于2023年11月,适用于Kubernetes v1.28+版本。