Kubernetes 核心组件架构详解
Kubernetes 核心组件架构详解
Kubernetes 是一个由多个核心组件组成的分布式系统,这些组件协同工作以提供容器编排能力。以下是 Kubernetes 的核心组件及其功能:
一、控制平面组件 (Control Plane)
1. kube-apiserver
功能:集群的统一入口和前端
- 暴露 Kubernetes API
- 处理 REST 操作请求
- 验证和配置数据
- 是所有其他组件通信的中枢
2. etcd
功能:分布式键值存储
- 保存集群所有配置数据和状态
- 采用 Raft 算法保证一致性
- 默认只运行在 master 节点
- 关键数据包括:Nodes, Pods, Configs, Secrets
3. kube-scheduler
功能:资源调度器
- 监听未调度的 Pod
- 根据资源需求、策略等选择合适 Node
- 考虑因素:
4. kube-controller-manager
功能:运行各种控制器
- Node Controller:监控节点状态
- Replication Controller:维护 Pod 副本数
- Endpoint Controller:维护 Service-Endpoint 关联
- Service Account & Token Controller:管理命名空间账户
5. cloud-controller-manager (可选)
功能:与云平台交互
- 对接云提供商 API
- 管理负载均衡器、路由等
- 实现节点控制器、路由控制器
二、节点组件 (Node Components)
1. kubelet
功能:节点代理
- 管理 Pod 生命周期
- 挂载 Pod 所需 Volume
- 执行容器健康检查
- 向 master 报告节点状态
2. kube-proxy
功能:网络代理
- 维护节点网络规则
- 实现 Service 的 VIP 转发
- 工作模式:
# 查看当前模式 ps aux | grep kube-proxy | grep -- --proxy-mode
- iptables (默认)
- ipvs (高性能)
- userspace (已废弃)
3. 容器运行时 (Container Runtime)
常见实现:
- Docker
- containerd
- CRI-O
- Mirantis Container Runtime
三、插件组件 (Addons)
1. DNS 服务
- CoreDNS (默认)
# 查看部署 kubectl get deployment -n kube-system coredns
2. 网络插件
常见选择:
- Calico
- Flannel
- Weave Net
- Cilium
3. Dashboard
- Web 管理界面
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
4. Ingress Controller
常见实现:
- Nginx Ingress
- Traefik
- HAProxy Ingress
- Istio Ingress Gateway
四、组件交互关系
五、组件部署方式对比
组件 | 典型部署位置 | 高可用方案 |
---|---|---|
api-server | Master | 多实例 + LB |
etcd | Master | 3/5节点集群 |
scheduler | Master | 多实例 leader选举 |
controller | Master | 多实例 leader选举 |
kubelet | 所有Node | - |
kube-proxy | 所有Node | - |
六、关键配置文件位置
-
组件配置:
/etc/kubernetes/manifests/
(静态Pod方式)/etc/systemd/system/kubelet.service.d/
-
认证文件:
/etc/kubernetes/pki/
(CA证书)/etc/kubernetes/kubelet.conf
-
网络配置:
/etc/cni/net.d/
(CNI配置)/var/lib/kubelet/
(kubelet数据)
七、组件健康检查
# 检查控制平面组件
kubectl get componentstatuses# 详细检查
kubectl get --raw='/readyz?verbose'
理解这些核心组件及其交互关系,是掌握 Kubernetes 架构的基础。实际部署时,根据集群规模和使用场景,可能需要对这些组件进行特定的配置和优化。