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

一、多集群管理概述

多集群管理是云原生扩展的关键:

使用场景:

  • 多地域部署
  • 多环境隔离
  • 灾备恢复
  • 混合云

二、Karmada架构

1. 架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      Karmada API Server                      │
└─────────────────────────────┬───────────────────────────────┘
                              │
┌─────────────────────────────┼───────────────────────────────┐
│                    Karmada Controller                        │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐            │
│  │   Push    │  │   Pull    │  │  Policy    │            │
│  │ Controller│  │ Controller│  │ Controller│            │
│  └────────────┘  └────────────┘  └────────────┘            │
└─────────────────────────────┬───────────────────────────────┘
                              │
┌─────────────────────────────┼───────────────────────────────┐
│              Member Clusters                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐    │
│  │ Cluster1 │  │ Cluster2 │  │ Cluster3 │  │ Cluster4 │    │
│  │ (北京)   │  │  (上海)  │  │  (广州)  │  │  (深圳)  │    │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘    │
└─────────────────────────────────────────────────────────────┘

2. 安装Karmada

bash 复制代码
# 安装Karmada
kubectl rollout status deployment/karmada-apiserver -n karmada-system
kubectl rollout status deployment/karmada-controller-manager -n karmada-system

# 添加集群
kubectl get clusters

3. 跨集群调度

yaml 复制代码
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: myapp-propagation
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      namespace: default
      name: myapp
  placement:
    clusterAffinity:
      clusterNames:
        - cluster-beijing
        - cluster-shanghai
    replicaScheduling:
      replicaSchedulingType: Divided
      weightPreference:
        staticWeightList:
          - clusterName: cluster-beijing
            weight: 1
          - clusterName: cluster-shanghai
            weight: 1

三、Rancher Fleet架构

1. 架构

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      Fleet Manager                           │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐            │
│  │  GitRepo   │  │  Cluster  │  │  Bundle    │            │
│  │  Watcher   │  │  Manager  │  │  Deployer  │            │
│  └────────────┘  └────────────┘  └────────────┘            │
└─────────────────────────────┬───────────────────────────────┘
                              │
┌─────────────────────────────┼───────────────────────────────┐
│              Registered Clusters                             │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                   │
│  │   RKE1   │  │  RKE2   │  │  K3s    │                   │
│  └──────────┘  └──────────┘  └──────────┘                   │
└─────────────────────────────────────────────────────────────┘

2. 配置示例

yaml 复制代码
apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
  name: myapp
  namespace: fleet-default
spec:
  repo: https://github.com/myorg/myapp
  branch: main
  paths:
    - /deploy
  targets:
    - name: prod
      clusterSelector:
        matchLabels:
          env: prod

四、多集群策略

1. 流量分发

yaml 复制代码
apiVersion: networking.karmada.io/v1alpha1
kind: MultiClusterIngress
metadata:
  name: myapp-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: myapp
                port:
                  number: 80
  gateways:
    - clusterNames:
        - cluster-beijing
        - cluster-shanghai

2. 灾难恢复

yaml 复制代码
apiVersion: policy.karmada.io/v1alpha1
kind: ClusterPropagationPolicy
metadata:
  name: critical-app
spec:
  resourceSelectors:
    - apiVersion: apps/v1
      kind: Deployment
      name: critical-app
  placement:
    clusterAffinity:
      clusterNames:
        - primary-cluster
    failover:
      applicationFailover: true
      gracePeriodSeconds: 10

五、总结

多集群管理核心要点:

  • Karmada:K8s原生,K8s SIG项目
  • Fleet:Rancher生态,简洁
  • 跨集群调度:统一管理
  • 灾备:故障转移

个人观点,仅供参考

相关推荐
用户8314550980311 小时前
如一 Agent 架构解读(二):上下文工程——为模型构造它唯一的现实
人工智能·架构
怕浪猫1 小时前
Agent 工程化面试:从开发到部署的 5 个关键问题
面试·架构·github
行者全栈架构师1 小时前
【鸿蒙心迹】鸿蒙网络请求架构实战——@ohos.net.http 到 Axios 封装、拦截器与统一错误处理(HarmonyOS 7.x)
前端·算法·架构
m0_587383002 小时前
工业场景设备维修维护实战技巧 全流程标准化落地与常见问题排查指南
java·spring·小程序·架构·需求分析
行者全栈架构师2 小时前
从 55% 到 6%:一个快餐营养规划器的算法迭代实录
后端·算法·架构
ZGIAI2 小时前
Agent 重试会不会越帮越乱?
人工智能·架构
用户6919026813392 小时前
LangChain 与 LangGraph:从「链」到「图」,一次讲清它们是什么、什么关系
面试·架构·设计
吴建旭 智宅焕3 小时前
智能家居全国交付知识生产系统的真实性架构:从AI生成内容到可验证交付资产
人工智能·架构·智能家居
辛迪聊物业数字化3 小时前
物业管理系统新手部署与实操指南
数据库·物联网·架构·系统架构
mldong5 小时前
审批流程图上那些亮着的线,数据库里一条都没存:jeeflow 工作流引擎的高亮是重算出来的
后端·架构