Kubernetes 的 Master 节点(控制平面)是集群的“大脑”,负责管理整个集群的状态、调度工作负载、处理 API 请求以及维护系统的核心组件。
一、Master 节点的核心组件
Master 节点由以下关键组件构成,共同协作实现集群控制功能:
组件 | 作用 | 核心功能 |
---|---|---|
API Server | 集群的唯一入口,提供 RESTful API 接口。 | 接收并验证用户请求(如 kubectl ),更新集群状态到 etcd。 |
Scheduler | 资源调度器,决定 Pod 在哪个 Node 上运行。 | 根据资源需求、亲和性规则等,选择最优节点。 |
Controller Manager | 运行多个控制器,确保集群实际状态与期望状态一致。 | 包括 Node 控制器、Deployment 控制器、Endpoint 控制器等。 |
etcd | 分布式键值存储数据库,保存集群的所有配置数据和状态。 | 提供强一致性的数据存储,是集群的“唯一真相源”。 |
Cloud Controller Manager(可选) | 对接云厂商的控制器,管理云资源(如负载均衡器、存储卷)。 | 仅在云环境中使用,实现节点自动扩缩容、服务暴露等云平台集成功能。 |
二、Master 节点的工作流程
用户请求处理
- 用户通过
kubectl
或客户端工具向 API Server 发送请求(如创建 Pod)。 - API Server 验证请求合法性,并将状态变更写入 etcd。
- 用户通过
调度决策
- Scheduler 监听未调度的 Pod,根据资源需求和策略选择合适 Node,更新 Pod 的 Node 绑定信息。
状态协调
- Controller Manager 中的控制器持续监控集群状态:
- Node 控制器:检测 Node 状态,标记不可用节点。
- Deployment 控制器:确保副本数与期望值一致,触发滚动更新。
- Endpoint 控制器:维护 Service 与 Pod 的映射关系。
数据持久化
- 所有集群状态变更(如 Pod 调度、配置更新)均通过 etcd 持久化存储。
三、Master 节点的高可用架构
生产环境中,Master 节点需部署为多副本以实现高可用(HA),避免单点故障:
1. 多 Master 节点部署
- API Server:通过负载均衡器(如 Nginx、HAProxy)对外暴露,多个实例同时运行。
- etcd 集群:以奇数节点(如 3、5)组成分布式集群,通过 Raft 协议保证数据一致性。
- Scheduler 和 Controller Manager:以 Leader 选举模式运行,同一时间仅一个实例生效。
四、Master 节点的安全机制
认证(Authentication)
- 支持多种认证方式:客户端证书、Bearer Token、ServiceAccount Token 等。
授权(Authorization)
- 基于 RBAC(角色访问控制)限制用户或服务的操作权限。
准入控制(Admission Control)
- 在请求持久化前进行拦截和修改(如
PodSecurityPolicy
、ResourceQuota
)。
- 在请求持久化前进行拦截和修改(如
etcd 加密
- 对存储的敏感数据(如 Secret)进行静态加密。
五、Master 节点的部署方式
1. 自建集群(On-Premise)
- 使用工具手动部署(如
kubeadm
、kubespray
)。 - 优点:灵活可控,适合定制化需求。
- 缺点:维护成本高,需自行处理高可用和升级。
2. 托管集群(Managed Kubernetes)
- 使用云厂商的托管服务(如 ACK、CCE)。
- 优点:自动化运维,内置高可用和监控。
- 缺点:依赖云平台,部分配置受限。
六、Master 节点与 Worker 节点的对比
特性 | Master 节点 | Worker 节点 |
---|---|---|
核心组件 | API Server、Scheduler、etcd 等 | kubelet、kube-proxy、容器运行时 |
职责 | 集群控制、调度、状态管理 | 运行工作负载(Pod) |
资源需求 | 高 CPU/内存(尤其 etcd) | 根据工作负载需求调整 |
高可用要求 | 必须多节点部署 | 可单节点,但建议多节点避免业务中断 |
七、最佳实践与注意事项
资源分配
- 为 etcd 预留足够内存和低延迟磁盘(SSD),避免因资源不足导致集群不可用。
备份与恢复
- 定期备份 etcd 数据,确保灾难恢复能力:
# 备份 etcd ETCDCTL_API=3 etcdctl snapshot save snapshot.db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key
- 定期备份 etcd 数据,确保灾难恢复能力:
监控与日志
- 监控 Master 组件健康状态(如 API Server 延迟、etcd 写入性能)。
- 收集组件日志(API Server、Scheduler、Controller Manager)。
版本升级
- 遵循官方升级路径,先升级 Master 节点,再升级 Worker 节点。
八、常见问题
Q: Master 节点宕机后如何恢复?
A: 若多 Master 节点部署,其他节点可接管服务;单节点需从备份恢复 etcd 并重启组件。Q: 如何减少 API Server 的负载?
A: 优化客户端请求(如减少LIST
操作)、启用分页查询、使用缓存(如 Client-go 的 Informer)。Q: etcd 性能瓶颈如何排查?
A: 检查磁盘 I/O、网络延迟,使用etcdctl check perf
测试性能。
Master 节点是 Kubernetes 集群的“指挥中心”,其稳定性和性能直接影响整个集群的可靠性。理解其核心组件、高可用架构及运维要点,是构建和管理生产级 Kubernetes 集群的关键基础。