Kubernetes 联邦 Deployment 指南:跨集群统一管理 Pod
一、联邦 Deployment 核心定义
联邦 Deployment 是 Kubernetes 联邦集群(Federation)中的跨集群部署控制器,完全兼容传统 Deployment API,核心价值在于:将 Deployment 的声明式管理能力扩展至多集群环境,通过联邦控制平面统一调度、更新、删除跨集群的 Deployment 资源。
二、核心特性与优势
-
API 兼容:与单集群 Deployment 配置完全一致,无需修改 YAML 结构即可迁移
-
跨集群同步:联邦控制平面自动在所有注册的底层集群中创建 / 同步 Deployment
-
副本均衡分布:默认将副本平均分配至各集群,支持自定义集群副本偏好
-
统一更新 / 删除:通过联邦 APIServer 操作,自动同步所有底层集群的资源状态
三、实操指南:从创建到管理
1. 创建联邦 Deployment
# 关键参数:--context=federation-cluster 指向联邦 APIServer(而非单个集群)
kubectl --context=federation-cluster create -f mydeployment.yaml
验证跨集群创建结果:
# 检查指定底层集群(如 gce-asia-east1a)的 Deployment 状态
kubectl --context=gce-asia-east1a get deployment mydep
# 同理验证其他集群,确认均已同步创建 Deployment
2. 副本分布规则
-
默认行为:副本数平均分配至所有注册集群
例:3 个集群 + 联邦 Deployment 副本数 9 → 每个集群 3 个副本(
spec.replicas=3) -
自定义分布 :通过注解
federation.kubernetes.io/deployment-preferences指定集群副本偏好(如部分集群多分配副本)
3. 更新联邦 Deployment
# 方式1:编辑联邦 Deployment 配置(自动同步所有底层集群)
kubectl --context=federation-cluster edit deployment mydep
# 方式2:修改镜像(跨集群自动滚动更新)
kubectl --context=federation-cluster set image deployment/mydep nginx=nginx:1.21
注意:滚动更新策略(
maxSurge/
maxUnavailable)仅对单个集群生效,各集群独立执行滚动更新
4. 删除联邦 Deployment
# 从联邦 APIServer 发起删除,自动清理所有底层集群的 Deployment
kubectl --context=federation-cluster delete deployment mydep
四、关键注意事项
-
所有操作必须通过
--context=federation-cluster指向联邦 APIServer,避免直接操作底层集群 -
联邦 Deployment 仅同步副本数、镜像、配置等核心字段,集群级特殊配置(如节点亲和性)需在底层集群单独调整
-
副本总数由联邦 Deployment 统一控制,底层集群不可单独修改副本数(会被联邦控制平面覆盖)
-
滚动更新、回滚等操作逻辑与单集群一致,但效果会同步至所有底层集群