Kubernetes多集群统一管理与调度需选对架构模式、配好控制平面、打通服务发现,主流生产环境弃用停滞的KubeFed,转而采用ArgoCD+Admiralty/Liqo等灵活组合方案,结合CoreDNS+ExternalDNS实现跨集群服务发现,并通过kubeconfig整合与标签化context支持多集群kubectl操作。
Kubernetes 多集群统一管理与调度不是靠单个命令就能完成的事,核心在于选对架构模式、配好控制平面、打通服务发现。目前主流生产环境不依赖已停滞的 KubeFed,而是用更灵活、可维护的组合方案。
根据业务目标决定底层架构:
topology.kubernetes.io/region=us),自动分发 Pod服务要跨集群调用,光靠 .svc.cluster.local 不行,得引入外部 DNS 层:
upstream 指向全局 DNS 服务器(如 Consul 或自建 Bind)<service>.<namespace>.svc.cluster-ext 域名kubectl 要能同时操作多个集群,关键在 kubeconfig 整合:
kubeconfig-us、kubeconfig-eu)kubectl config view --merge --flatten 合并所有配置到 ~/.kube/config
kubectl config set-context kind-us --user=kind-us --cluster=kind-us --namespace=default,再加标签:kubectl config set-context kind-us --env=prod --region=us
kubectl --context=kind-us get pod 或结合 kubectx/kubens 工具快速切换以 Admiralty 为例,三步跑通:
VirtualNode 资源,声明每个工作集群可贡献的 CPU/Mem 容量topologySpreadConstraints 或 nodeSelector: topology.kubernetes.io/region: us 的 Deployment,调度器自动选择合适集群的节点部署