2. 集群架构基础:Kubernetes 核心组件与节点角色
Kubernetes 集群的物理与逻辑结构遵循严格的控制平面(Control Plane)与数据平面(Data Plane)分离原则。控制平面负责全局决策与状态管理,数据平面负责运行实际工作负载。理解这一分层是设计多租户隔离架构的前提。
2.1 核心组件总览
集群由一组协作的组件构成,按职责分为控制平面组件与节点组件。下表列出各组件的核心功能与部署位置:
| 组件 | 所属平面 | 核心职责 | 部署节点 |
|---|---|---|---|
| API Server | 控制平面 | 所有组件交互的网关,提供 RESTful API,执行认证、授权、准入控制 | Master 节点 |
| etcd | 控制平面 | 分布式键值存储,保存集群全部状态数据(配置、元数据、资源对象) | Master 节点 |
| Scheduler | 控制平面 | 监测未调度的 Pod,根据资源需求、约束、亲和性等策略绑定到合适节点 | Master 节点 |
| Controller Manager | 控制平面 | 运行各类控制器(Deployment、ReplicaSet、Node 等),确保实际状态收敛到期望状态 | Master 节点 |
| kubelet | 数据平面 | 节点代理,负责管理 Pod 生命周期、挂载卷、上报节点与 Pod 状态 | Worker 节点 |
| kube-proxy | 数据平面 | 维护节点上的网络规则,实现 Service 的负载均衡与网络转发 | Worker 节点 |
| Container Runtime | 数据平面 | 实际运行容器的软件(如 containerd、CRI-O) | Worker 节点 |
设计要点:在多租户隔离架构中,API Server 是租户请求的唯一入口,所有租户隔离策略(RBAC、NetworkPolicy、ResourceQuota)均通过 API Server 的准入控制链生效。etcd 的存储隔离则决定了租户数据的物理边界。
2.2 节点角色:Master 与 Worker
Kubernetes 集群中的节点分为两类角色,职责严格分离:
- Master 节点(控制平面节点):运行 API Server、etcd、Scheduler、Controller Manager。通常部署奇数个(3 或 5)以实现高可用。Master 节点不调度用户工作负载,以保证控制平面稳定性。
- Worker 节点(数据平面节点):运行 kubelet、kube-proxy、Container Runtime。承载用户 Pod,提供计算、存储、网络资源。Worker 节点数量可弹性伸缩。
关键原则:控制平面组件不应与用户工作负载混合部署。在多租户场景中,若控制平面被租户 Pod 抢占资源,可能导致全局调度延迟或 API 响应超时,影响所有租户。
2.3 控制平面与数据平面分离原则
分离原则是 Kubernetes 架构的基石,其核心价值体现在以下三个维度:
- 安全边界:控制平面 API 仅对管理员和经过认证的租户开放;数据平面网络策略隔离租户 Pod 之间的流量。
- 故障隔离:Worker 节点故障仅影响该节点上的租户负载,不会导致控制平面不可用;控制平面组件通过多副本实现自愈。
- 可扩展性:控制平面与数据平面可独立扩缩容。租户数量增长时,优先扩展 Worker 节点;API 请求量增长时,扩展 API Server 实例。
2.4 组件通信流程
一个典型的 Pod 创建请求经过的组件链路如下,体现控制平面与数据平面的协作:
- 用户请求 → 通过 kubectl 或 API 调用发送到 API Server。
- API Server 执行认证、授权、准入控制(MutatingWebhook、ValidatingWebhook),验证通过后将 Pod 对象写入 etcd。
- Scheduler 通过 Watch 机制监测到未调度的 Pod,根据资源策略选择一个 Worker 节点,将绑定结果写回 API Server。
- kubelet 在对应 Worker 节点上监测到新 Pod 被调度到本节点,调用 Container Runtime 启动容器。
- Controller Manager 中的控制器(如 ReplicaSet Controller)持续监测状态,确保运行副本数符合期望。
多租户影响:若某个租户在 API Server 上发起大量写请求(如频繁创建/删除 Pod),可能造成 etcd 写入压力增大,影响其他租户的 API 响应延迟。建议为不同租户配置独立的 API 优先级与公平性(APF)队列。
2.5 高可用部署建议
在生产环境中,控制平面与数据平面的高可用配置如下:
| 组件 | 高可用策略 | 推荐副本数 |
|---|---|---|
| API Server | 多实例 + 负载均衡(如 HAProxy、Nginx) | 3 |
| etcd | 集群模式,奇数节点,Raft 共识 | 3 或 5 |
| Scheduler | 多实例 + Leader Election | 3 |
| Controller Manager | 多实例 + Leader Election | 3 |
| Worker 节点 | Pod 反亲和 + 跨可用区分布 | ≥ 3 |
多租户高可用考量:控制平面组件的高可用应独立于租户数量设计。即使单个租户的负载激增,控制平面仍应保持稳定的 API 响应能力。建议为 API Server 配置独立的资源配额与限流策略,防止租户间相互干扰。