活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      分布式容器云平台

      分布式容器云平台

        • 产品动态
        • 产品简介
        • 产品定义
        • 产品优势
        • 产品功能
        • 应用场景
        • 使用限制
        • 计费说明
        • 计费项及计费方式
        • 价格
        • 计费FAQ
        • 快速入门
        • 入门指引
        • 用户指南
        • 授权管理
        • 授权概述
        • 资源委托协议
        • 注册集群
        • 注册集群概述
        • 本地注册集群
        • 天翼云注册集群
        • 三方云注册集群
        • 单集群控制台
        • 其他类型注册集群控制台
        • 运维管理
        • Prometheus 监控
        • 容器舰队
        • 容器舰队概述
        • 创建容器舰队
        • 集群联邦
        • 集群联邦概述
        • 创建集群联邦
        • 平台服务
        • 权限配置
        • 权限配置概述
        • IAM 授权
        • RBAC 授权
        • 生态中心
        • 容器迁移
        • 容器迁移概述
        • 集群元数据备份与恢复
        • 跨集群跨地域容灾迁移
        • 应用迁移
        • 本地IDC集群->天翼云CCE
        • 三方云集群->天翼云CCE
        • 天翼云CCE同资源池迁移
        • 天翼云CCE跨资源池迁移
        • 孤岛集群->天翼云CCE
        • 最佳实践
        • 基于集群联邦进行多集群应用分发与管理
        • 使用集群联邦实现应用多活容灾
        • 打通注册集群与联邦实例之间的联通网络
        • Pod 水平自动伸缩
        • 分布式存储Ceph最佳实践
        • API参考
        • API使用说明
        • 常见问题
        • 注册集群
        • 集群联邦
        • 故障修复
        • 常见故障
        • 相关协议
        • 服务协议
        • 服务等级协议
          无相关产品

          本页目录

          帮助中心分布式容器云平台最佳实践基于集群联邦进行多集群应用分发与管理
          基于集群联邦进行多集群应用分发与管理
          更新时间 2025-06-19 20:10:08
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2025-06-19 20:10:08
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本节介绍最佳实践。

          CCE One集群联邦支持通过PropagationPolicy定制资源模板分发策略,以及支持通过OverridePolicy来定制资源模板分发到不同成员集群的差异化配置。

          这里,我们以分发一个Nginx Deployment Web应用为例,简要介绍如何实现工作负载的多集群应用分发。

          前提条件

          1. 已开通CCE One集群联邦实例,可按需给apiserver绑定公网EIP以暴露到公网访问。

          2. 通过集群联邦接入配置,获取到联邦apiserver访问的KubeConfig文件。

          3. 联邦中有添加成员集群,且成员集群状态为Ready(代表已联通)。

          通过kubectl命令查询联邦控制面中成员集群列表及状态,可参考如下命令:

          # 将如下‘/home/ctyun/.kube/cceone-fed.yaml’替换为您本地的联邦KubeConfig文件路径
          # 集群状态Ready=True代表已正常接入,可进行应用分发
          
          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get cluster
          NAME               VERSION   MODE   READY   AGE
          cce-cceone-demo1   v1.27.8   Push   True    16d
          cce-cceone-demo2   v1.22.1   Push   True    56d
          cceone-c2          v1.22.1   Push   True    55d
          cceone-cluster1    v1.22.1   Push   True    55d
          icce-yhn-296                 Push   False   16d

          操作指引

          该操作指引以分发一个nginx deployment到成员集群为例,若需分发其他资源(包括CR),只需将nginx deployment替换为具体的资源模板即可。
           

          注意

          1. 资源模板和PropagationPolicy之间可任意创建顺序不分先后,当二者匹配后即立即触发调度分发逻辑。

          2. 差异化策略需要在触发调度分发逻辑之前创建好,也即差异化策略不能是最后一个。

          如下为详细操作参考:

          步骤一: 创建资源模板

          执行如下命令,在联邦控制面中创建资源模板:

          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml create deployment nginx --image nginx --replicas=3
          deployment.apps/nginx created
          
          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get deployment nginx 
          NAME    READY   UP-TO-DATE   AVAILABLE   AGE
          nginx   0/3     0            0           21s

          此时,只是将K8S YAML apply到联邦控制面,还未分发到成员集群;联邦控制面当前也并不会调谐这些workload,也即实际看到的READY副本数会为0;

          步骤二:创建差异化策略

          差异化策略(OverridePolicy)模板参考如下。若不需要做集群间差异化,则可以略过该步骤。

          # overridepolicy.yaml
          apiVersion: policy.karmada.io/v1alpha1
          kind: OverridePolicy
          metadata:
            name: example
          spec:
            resourceSelectors:
              - apiVersion: apps/v1
                kind: Deployment
                name: nginx # If no namespace is specified, the namespace is inherited from the parent object scope.
            overrideRules:
              - targetCluster:
                  clusterNames:
                    - cce-cceone-demo1
                overriders:
                  labelsOverrider:
                    - operator: add
                      value:
                        cceone.propagationto: cce-cceone-demo1
              - targetCluster:
                  clusterNames:
                    - cce-cceone-demo2
                overriders:
                  labelsOverrider:
                    - operator: add
                      value:
                        cceone.propagationto: cce-cceone-demo2

          将如上YAML文件通过如下命令apply到联邦控制面中:

          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml apply -f overridepolicy.yaml 
          overridepolicy.policy.karmada.io/example created
          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get overridepolicy example
          NAME      AGE
          example   21s

          此时,通过命令查看nginx工作负载,还是未分发状态

          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get deployment nginx 
          NAME    READY   UP-TO-DATE   AVAILABLE   AGE
          nginx   0/3     0            0           61m

          步骤三:创建调度策略

          调度策略(PropagationPolicy)模板参考如下,可基于实际需要调整其中的污点容忍及负载拆分策略等:

          # propagationpolicy.yaml
          apiVersion: policy.karmada.io/v1alpha1
          kind: PropagationPolicy
          metadata:
            name: example-policy # The default namespace is `default`.
          spec:
            propagateDeps: true
            resourceSelectors:
              - apiVersion: apps/v1
                kind: Deployment
                name: nginx # If no namespace is specified, the namespace is inherited from the parent object scope.
            placement:
              clusterAffinity:    # 指定目标集群
                clusterNames:            
                  - cce-cceone-demo1
                  - cce-cceone-demo2
              clusterTolerations:  # 容忍成员集群污点,影响调度逻辑
                - key: cluster.karmada.io/not-ready       
                  operator: Exists          
                  effect: NoExecute          
                  tolerationSeconds: 300
                - key: cluster.karmada.io/unreachable     
                  operator: Exists          
                  effect: NoExecute          
                  tolerationSeconds: 300
              replicaScheduling:  # 指定工作负载副本在成员集群间的分发策略
                replicaSchedulingType: Divided        
                replicaDivisionPreference: Weighted        
                weightPreference:
                  staticWeightList:
                    - targetCluster:
                        clusterNames:
                          - cce-cceone-demo1            
                      weight: 1                          
                    - targetCluster:
                        clusterNames:
                          - cce-cceone-demo2                
                      weight: 2

          通过如下命令,将调度策略apply到联邦控制面中

          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml apply -f propagationpolicy.yaml 
          propagationpolicy.policy.karmada.io/example-policy created
          ctyun@0000000g-FxXsKxFWUv:~/tmp$ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get propagationpolicy example-policy
          NAME             CONFLICT-RESOLUTION   PRIORITY   AGE
          example-policy   Abort                 0          13s

          此时,通过如下命令,查看工作负载在多集群之间的调度情况:

          # 查看工作负载成员Pod Ready情况
          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get deployment nginx 
          NAME    READY   UP-TO-DATE   AVAILABLE   AGE
          nginx   3/3     3            3           10s
          # 查询工作负载多集群调度结果
          $ kubectl --kubeconfig=/home/ctyun/.kube/cceone-fed.yaml get resourcebinding nginx-deployment -o yaml
          apiVersion: work.karmada.io/v1alpha2
          kind: ResourceBinding
          metadata:
            annotations:
              policy.karmada.io/applied-placement: '{"clusterAffinity":{"clusterNames":["cce-cceone-demo1","cce-cceone-demo2"]},"clusterTolerations":[{"key":"cluster.karmada.io/not-ready","operator":"Exists","effect":"NoExecute","tolerationSeconds":300},{"key":"cluster.karmada.io/unreachable","operator":"Exists","effect":"NoExecute","tolerationSeconds":300}],"replicaScheduling":{"replicaSchedulingType":"Divided","replicaDivisionPreference":"Weighted","weightPreference":{"staticWeightList":[{"targetCluster":{"clusterNames":["cce-cceone-demo1"]},"weight":1},{"targetCluster":{"clusterNames":["cce-cceone-demo2"]},"weight":2}]}}}'
              propagationpolicy.karmada.io/name: example-policy
              propagationpolicy.karmada.io/namespace: default
              resourcebinding.karmada.io/dependencies: "null"
            creationTimestamp: "2025-05-30T09:52:51Z"
            finalizers:
            - karmada.io/binding-controller
            - karmada.io/binding-dependencies-distributor
            generation: 2
            labels:
              propagationpolicy.karmada.io/permanent-id: bb4b469a-6c93-4ed7-8465-e91564eb33eb
              resourcebinding.karmada.io/permanent-id: 89904db8-95a4-4820-b3b7-cea95b1c3e51
            name: nginx-deployment
            namespace: default
            ownerReferences:
            - apiVersion: apps/v1
              blockOwnerDeletion: true
              controller: true
              kind: Deployment
              name: nginx
              uid: 86da5387-b36b-40c4-99a2-462cbc832c99
            resourceVersion: "44338541"
            uid: 90b31326-7a74-405e-81e3-98ac18969d9f
          spec:
            clusters:
            - name: cce-cceone-demo2
              replicas: 2
            - name: cce-cceone-demo1
              replicas: 1
            conflictResolution: Abort
            placement:
              clusterAffinity:
                clusterNames:
                - cce-cceone-demo1
                - cce-cceone-demo2
              clusterTolerations:
              - effect: NoExecute
                key: cluster.karmada.io/not-ready
                operator: Exists
                tolerationSeconds: 300
              - effect: NoExecute
                key: cluster.karmada.io/unreachable
                operator: Exists
                tolerationSeconds: 300
              replicaScheduling:
                replicaDivisionPreference: Weighted
                replicaSchedulingType: Divided
                weightPreference:
                  staticWeightList:
                  - targetCluster:
                      clusterNames:
                      - cce-cceone-demo1
                    weight: 1
                  - targetCluster:
                      clusterNames:
                      - cce-cceone-demo2
                    weight: 2
            propagateDeps: true
            replicas: 3
            resource:
              apiVersion: apps/v1
              kind: Deployment
              name: nginx
              namespace: default
              resourceVersion: "44338446"
              uid: 86da5387-b36b-40c4-99a2-462cbc832c99
            schedulerName: default-scheduler
          status:
            aggregatedStatus:      # 此处为聚合了成员集群中该Deployment对应副本Pod的部署状态
            - applied: true
              clusterName: cce-cceone-demo1
              health: Healthy
              status:
                availableReplicas: 1
                generation: 1
                observedGeneration: 1
                readyReplicas: 1
                replicas: 1
                resourceTemplateGeneration: 2
                updatedReplicas: 1
            - applied: true
              clusterName: cce-cceone-demo2
              health: Healthy
              status:
                availableReplicas: 2
                generation: 1
                observedGeneration: 1
                readyReplicas: 2
                replicas: 2
                resourceTemplateGeneration: 2
                updatedReplicas: 2
            conditions:
            - lastTransitionTime: "2025-05-30T09:52:51Z"
              message: Binding has been scheduled successfully.
              reason: Success
              status: "True"
              type: Scheduled
            - lastTransitionTime: "2025-05-30T09:52:51Z"
              message: All works have been successfully applied
              reason: FullyAppliedSuccess
              status: "True"
              type: FullyApplied
            lastScheduledTime: "2025-05-30T09:52:51Z"
            schedulerObservedGeneration: 2
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  最佳实践
          下一篇 :  使用集群联邦实现应用多活容灾
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明