【架构实战】多集群管理架构设计(Karmada/Fleet)

张开发
2026/4/21 16:07:28 15 分钟阅读

分享文章

【架构实战】多集群管理架构设计(Karmada/Fleet)
一、多集群管理概述多集群管理是云原生扩展的关键使用场景多地域部署多环境隔离灾备恢复混合云二、Karmada架构1. 架构图┌─────────────────────────────────────────────────────────────┐ │ Karmada API Server │ └─────────────────────────────┬───────────────────────────────┘ │ ┌─────────────────────────────┼───────────────────────────────┐ │ Karmada Controller │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ Push │ │ Pull │ │ Policy │ │ │ │ Controller│ │ Controller│ │ Controller│ │ │ └────────────┘ └────────────┘ └────────────┘ │ └─────────────────────────────┬───────────────────────────────┘ │ ┌─────────────────────────────┼───────────────────────────────┐ │ Member Clusters │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Cluster1 │ │ Cluster2 │ │ Cluster3 │ │ Cluster4 │ │ │ │ (北京) │ │ (上海) │ │ (广州) │ │ (深圳) │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘2. 安装Karmada# 安装Karmadakubectl rollout status deployment/karmada-apiserver-nkarmada-system kubectl rollout status deployment/karmada-controller-manager-nkarmada-system# 添加集群kubectl get clusters3. 跨集群调度apiVersion:policy.karmada.io/v1alpha1kind:PropagationPolicymetadata:name:myapp-propagationspec:resourceSelectors:-apiVersion:apps/v1kind:Deploymentnamespace:defaultname:myappplacement:clusterAffinity:clusterNames:-cluster-beijing-cluster-shanghaireplicaScheduling:replicaSchedulingType:DividedweightPreference:staticWeightList:-clusterName:cluster-beijingweight:1-clusterName:cluster-shanghaiweight:1三、Rancher Fleet架构1. 架构┌─────────────────────────────────────────────────────────────┐ │ Fleet Manager │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ GitRepo │ │ Cluster │ │ Bundle │ │ │ │ Watcher │ │ Manager │ │ Deployer │ │ │ └────────────┘ └────────────┘ └────────────┘ │ └─────────────────────────────┬───────────────────────────────┘ │ ┌─────────────────────────────┼───────────────────────────────┐ │ Registered Clusters │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ RKE1 │ │ RKE2 │ │ K3s │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘2. 配置示例apiVersion:fleet.cattle.io/v1alpha1kind:GitRepometadata:name:myappnamespace:fleet-defaultspec:repo:https://github.com/myorg/myappbranch:mainpaths:-/deploytargets:-name:prodclusterSelector:matchLabels:env:prod四、多集群策略1. 流量分发apiVersion:networking.karmada.io/v1alpha1kind:MultiClusterIngressmetadata:name:myapp-ingressspec:ingressClassName:nginxrules:-host:myapp.example.comhttp:paths:-path:/pathType:Prefixbackend:service:name:myappport:number:80gateways:-clusterNames:-cluster-beijing-cluster-shanghai2. 灾难恢复apiVersion:policy.karmada.io/v1alpha1kind:ClusterPropagationPolicymetadata:name:critical-appspec:resourceSelectors:-apiVersion:apps/v1kind:Deploymentname:critical-appplacement:clusterAffinity:clusterNames:-primary-clusterfailover:applicationFailover:truegracePeriodSeconds:10五、总结多集群管理核心要点KarmadaK8s原生K8s SIG项目FleetRancher生态简洁跨集群调度统一管理灾备故障转移个人观点仅供参考

更多文章