Kubernetes组件
外观
Kubernetes组件[编辑 | 编辑源代码]
Kubernetes(简称K8s)是一个开源的容器编排平台,其核心功能由多个相互协作的组件实现。本页面将详细介绍Kubernetes的核心架构组件及其交互方式。
概述[编辑 | 编辑源代码]
Kubernetes采用主从架构(Master-Worker),包含控制平面(Control Plane)组件和工作节点(Node)组件。所有组件通过API Server进行通信,使用etcd作为集群状态存储。
控制平面组件[编辑 | 编辑源代码]
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时:
实际案例[编辑 | 编辑源代码]
电商应用部署场景: 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
数学基础[编辑 | 编辑源代码]
调度器使用的评分公式示例: 其中和为权重系数。
版本变化[编辑 | 编辑源代码]
- v1.20+:默认容器运行时接口(CRI)改为containerd
- v1.26+:移除Docker支持
- v1.29+:引入结构化配置管理
本内容最后更新于2023年11月,适用于Kubernetes v1.28+版本。