多集群统一资源调度依赖联邦控制平面主动协调,通过宿主集群部署KubeFed等组件、定义FederatedTypeConfig资源(含Template/Placement/Override)、配置ReplicaSchedulingPreference策略实现跨集群智能分发与动态负载调整,并结合ServiceDNSRecord打通服务发现与流量路由。

多集群统一资源调度不是靠“手动同步”或“脚本轮询”实现的,而是依赖联邦控制平面主动协调各集群状态、按策略分发和动态调整负载。核心在于把多个独立集群变成一个逻辑上的“超集群”,让资源调度具备跨域感知能力。
明确联邦角色与基础准备
先区分宿主集群(Host)和成员集群(Member):宿主集群运行联邦控制平面(如 KubeFed 或 Karmada 的 manager),负责全局决策;成员集群只运行工作负载,不参与调度计算。部署前必须确保:
- 至少两个 Kubernetes 集群(v1.16+),网络互通且能通过 kubectl 访问
- 所有集群启用 RBAC,并为联邦组件配置足够权限(如 cluster-admin)
- 安装 Helm 3.x(用于部署联邦控制平面)
- 各集群已配置默认 StorageClass 和 CNI 插件,避免联邦资源创建失败
定义联邦资源与分发策略
联邦不是简单复制 YAML,而是通过 FederatedTypeConfig 声明哪些资源类型要跨集群管理(如 Deployment、Service、ConfigMap)。每个联邦资源由三部分构成:
- Template:标准 Kubernetes 资源定义,描述应用形态
- Placement:指定目标集群列表(如 [cluster-a, cluster-b]),支持 label selector 匹配
- Override:为特定集群定制字段,例如给 cluster-b 的 Deployment 设置不同副本数或环境变量
例如,一个联邦 Deployment 可在 cluster-a 部署 3 个副本,在 cluster-b 部署 1 个副本,同时为后者注入 region=beijing 标签。
配置跨集群调度与副本分配
单纯分发不等于调度。真正实现“统一资源调度”,需引入 ReplicaSchedulingPreference(RSP)策略。它允许你设置:
- 各集群的权重(如 cluster-a:70%,cluster-b:30%)
- 最小/最大副本边界(防止某集群过载或空跑)
- 基于指标的弹性条件(需配合 Prometheus + metrics-server)
RSP 控制器会持续采集各集群的 CPU 使用率、内存压力等数据,自动增减各集群中的副本数量,使整体负载趋近预设比例。
打通服务发现与流量路由
资源调度完成,服务还需可访问。联邦通过 ServiceDNSRecord + Domain 资源生成统一 DNS 记录,并对接外部 DNS 服务商(如阿里云云解析、Azure DNS):
- 按权重分流:将 80% 流量导向华东集群,20% 导向华北集群
- 按地域分流:用户 IP 属于华东则解析到 cluster-a 的 Ingress LB,属华北则解析到 cluster-b
- 健康检查联动:当 cluster-a 的 FederatedService 下所有 Endpoint 不可用时,DNS 自动剔除该集群记录
这样,应用层无需修改代码,就能实现跨集群的流量闭环调度。










