Kubernetes架构深度解析:Master和Node节点核心组件详解
引言
Kubernetes 是容器编排的事实标准,理解其架构是掌握云原生技术的基础。本文将深入解析 Kubernetes 的架构设计,包括 Master 节点和 Node 节点的核心组件,让你彻底理解 Kubernetes 的工作原理。
一、Kubernetes 架构概览
1.1 整体架构
1.2 组件通信
| 组件 | 通信方式 | 协议 |
|---|---|---|
| API Server ↔ etcd | 直接连接 | gRPC |
| API Server ↔ kubelet | HTTP/HTTPS | REST API |
| API Server ↔ Controller | HTTP/HTTPS | REST API |
| kubelet ↔ Container Runtime | CRI | gRPC |
二、Master 节点组件
2.1 API Server(kube-apiserver)
职责:
- Kubernetes 集群的统一入口
- 提供 RESTful API
- 认证、授权、准入控制
- 数据验证和转换
特点:
- 无状态设计,可水平扩展
- 所有组件都通过 API Server 通信
- 支持多种认证方式(证书、Token、RBAC)
配置示例:
apiVersion:v1kind:Podmetadata:name:my-podspec:containers:-name:nginximage:nginx:latest2.2 etcd
职责:
- 存储集群所有数据
- 分布式键值存储
- 提供 Watch 机制
存储内容:
- Pod、Service、Deployment 等资源
- 集群配置
- 状态信息
特点:
- 强一致性
- 高可用(通常 3 或 5 个节点)
- 支持事务
数据模型:
/registry/pods/default/my-pod /registry/services/default/my-service /registry/deployments/default/my-deployment2.3 Controller Manager(kube-controller-manager)
职责:
- 运行各种控制器
- 确保集群状态符合期望
- 执行控制循环
核心控制器:
| 控制器 | 功能 |
|---|---|
| Deployment Controller | 管理 Deployment 和 ReplicaSet |
| ReplicaSet Controller | 确保 Pod 副本数 |
| Node Controller | 监控节点状态 |
| Service Controller | 管理 Service 和 Endpoint |
| Namespace Controller | 管理命名空间 |
工作流程:
2.4 Scheduler(kube-scheduler)
职责:
- 为 Pod 选择最佳 Node
- 考虑资源需求、约束、亲和性
调度流程:
调度策略:
- 资源需求(CPU、内存)
- 节点选择器(nodeSelector)
- 亲和性/反亲和性(affinity)
- 污点和容忍(taint/toleration)
三、Node 节点组件
3.1 kubelet
职责:
- 节点上的主要代理
- 管理 Pod 生命周期
- 与 Container Runtime 通信
- 监控节点和 Pod 状态
功能:
- 从 API Server 获取 Pod 清单
- 创建和管理 Pod
- 挂载数据卷
- 执行健康检查
- 报告节点和 Pod 状态
工作流程:
3.2 kube-proxy
职责:
- 实现 Service 的网络代理
- 负载均衡
- 网络规则管理
代理模式:
| 模式 | 说明 | 性能 |
|---|---|---|
| userspace | 用户空间代理(已弃用) | 低 |
| iptables | iptables 规则(默认) | 中 |
| ipvs | IPVS 负载均衡 | 高 |
工作原理: