Kubernetes核心组件

Kubernetes 集群节点组件架构图

网络与存储插件

Worker/数据平面节点

Master/Control Plane 节点

节点通用组件

节点通用组件

控制平面核心组件

所有kubelet注册
并上报心跳

所有kubelet注册
并上报心跳

服务发现与
负载均衡

服务发现与
负载均衡

配置网络规则
iptables/ipvs

配置网络规则
iptables/ipvs

管理容器
上报状态

管理容器
上报状态

控制平面核心

运行Pod

运行Pod

Worker节点运行的Pod

用户应用Pod
Web/DB

DaemonSet Pod
日志/监控

Job/CronJob Pod
批处理

StatefulSet Pod
MySQL集群

Master节点运行的Pod

kube-apiserver Pod

kube-scheduler Pod

kube-controller-mgr Pod

etcd Pod

网络插件Pod
Calico/Flannel

CoreDNS Pod

Kubernetes 集群架构

kube-apiserver
集群统一入口/REST API

etcd
分布式键值存储

kube-scheduler
Pod调度器

kube-controller-manager
控制器管理器

cloud-controller-manager
云厂商集成

kubelet
节点代理

kube-proxy
网络代理

容器运行时
containerd/CRI-O

kubelet
节点代理

kube-proxy
网络代理

容器运行时
containerd/CRI-O

CNI网络插件
Pod网络

CSI存储插件
持久化存储

架构图说明

区块结构

  1. Master节点区块(蓝色边框)
  • 控制平面核心组件(蓝色填充):仅Master节点特有的组件
  • 节点通用组件(绿色填充):所有节点都有的组件
  • Master节点运行的Pod(橙色填充):在Master节点上运行的系统Pod
  1. Worker节点区块(无特殊边框)
  • 节点通用组件(绿色填充):所有节点都有的组件
  • Worker节点运行的Pod(橙色填充):在Worker节点上运行的应用Pod
  1. 网络与存储插件区块(紫色边框)
  • CNI网络插件:提供Pod网络通信
  • CSI存储插件:提供持久化存储

组件分类

颜色组件类型说明
蓝色控制平面组件仅Master节点运行,集群管理核心
绿色节点通用组件所有节点都运行,基础功能组件
橙色Pod实例容器化运行的组件或应用
紫色集群插件扩展功能,网络和存储

关键通信路径

  1. kube-apiserver → kubelet:所有节点的kubelet向API Server注册并上报状态
  2. kube-apiserver → kube-proxy:所有节点的kube-proxy从API Server获取Service信息
  3. kubelet → 容器运行时:kubelet通过容器运行时管理容器生命周期
  4. kube-proxy → CNI插件:kube-proxy配置网络规则实现Service网络

组件详细说明表

Master 节点特有组件(控制平面)

组件作用关键特性
kube-apiserver集群统一入口,REST API 服务认证/授权/准入控制,水平扩展
etcd分布式键值存储,集群状态存储高可用,Raft 共识算法
kube-schedulerPod 调度决策,选择运行节点资源评估,亲和性策略
kube-controller-manager运行各种控制器,维持期望状态Node/Deployment/Service 等控制器
cloud-controller-manager与云平台 API 交互节点管理,负载均衡器,存储卷

所有节点共有组件

组件在 Master 节点的作用在 Worker 节点的作用
kubelet运行控制平面 Pod,节点状态上报运行用户 Pod,节点状态上报
kube-proxy为控制平面组件提供网络访问为用户 Pod 提供网络访问
容器运行时运行控制平面容器运行用户应用容器

Master 节点上的典型 Pod

Pod 类型示例作用
控制平面kube-apiserver, kube-scheduler集群控制功能
网络插件Calico, Flannel, Cilium提供 Pod 网络
DNSCoreDNS集群内服务发现
监控Prometheus, Grafana监控集群状态
日志EFK Stack日志收集

Worker 节点上的典型 Pod

Pod 类型示例特点
用户应用Web 服务器,数据库业务应用
DaemonSet日志代理,监控代理每个节点运行一个
Job/CronJob批处理任务,定时任务一次性或定时运行
StatefulSetMySQL 集群,Redis 集群有状态应用

节点间通信流程

Worker 节点 2

Worker 节点 1

Master 节点

1. kubectl apply

2. 存储状态

3. 通知调度器

4. 选择节点

5. 更新状态

6. 通知目标节点kubelet

7. 拉取镜像运行容器

8. 状态上报

9. 存储状态

10. 监听状态变化

11. 获取期望状态

12. 维护网络规则

13. 同步网络规则

用户/客户端
(kubectl/API)

kube-apiserver
(API 网关)

kube-scheduler
(调度器)

kube-controller-mgr
(控制器)

etcd
(状态存储)

kubelet
(Master)

kube-proxy
(Master)

kubelet
(Worker1)

kube-proxy
(Worker1)

容器运行时
运行用户Pod

kubelet
(Worker2)

kube-proxy
(Worker2)

容器运行时
运行用户Pod

关键要点总结

架构设计理念

  1. 分离关注点:控制平面与数据平面分离
  2. 对称性:所有节点运行相同的基础组件(kubelet、kube-proxy)
  3. 自托管:控制平面组件自身也作为 Pod 运行
  4. 声明式 API:通过 etcd 存储期望状态

为什么 Master 也需要 kubelet 和 kube-proxy?

  1. 运行控制平面 Pod:API Server、Scheduler 等也以容器形式运行
  2. 统一网络模型:所有节点都能访问 Service 网络
  3. 简化运维:一致的节点配置和管理方式
  4. 高可用部署:多个 Master 节点对等部署

实际部署注意事项

  1. 污点与容忍度:Master 默认有 NoSchedule 污点
  2. 资源预留:Master 节点需要预留资源给系统组件
  3. 安全加固:限制对 Master 节点的访问
  4. 备份 etcd:定期备份 etcd 数据

扩展组件(可选)

  • CNI 插件:Calico、Flannel、Cilium(网络)
  • CSI 插件:存储提供商插件(存储)
  • Ingress 控制器:Nginx、Traefik(入口流量)
  • 服务网格:Istio、Linkerd(微服务治理)

通过这种架构,Kubernetes 实现了:

  • 高可用性:多 Master 节点部署
  • 可扩展性:可添加更多 Worker 节点
  • 自修复能力:控制器保持期望状态
  • 声明式管理:用户声明期望状态,系统实现

参考文献:from Deepseek.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值