天翼云同Region迁移 kubectl get deploy nginxNAME READY UPTODATE AVAILABLE AGE nginx 1/1 1 1 66s[root@cluster1] kubectl get podNAME READY STATUS RESTARTS AGE nginx6799fc88d8sqjj4 1/1 Running 0 2m12s 我们可以基于联邦控制面kubectl方式,执行以下命令来将其提升到联邦控制面管理: shell [root@master1] karmadactl promote deployment nginx n default c member1Resource "apps/v1, Resourcedeployments"(default/nginx) is promoted successfully 此时,再在联邦控制面中查询该工作负载,可看到已经可以查询到,说明已被联邦实例接管: shell [root@master1] kubectl get deployNAME READY UPTODATE AVAILABLE AGE nginx 1/1 1 1 7m25s 检查成员集群中对应nginx无状态工作负载,对应Pod并未重启: shell [root@cluster1] kubectl get podNAME READY STATUS RESTARTS AGE nginx6799fc88d8sqjj4 1/1 Running 0 15m 方式二:批量提升接管,原集群中工作负载Pod会重启; 对于希望批量提升到联邦控制面接管,以及对Pod重启无感知的的服务或资源,可考虑采用本方式,其执行效率相对更高。 在成员集群中已部署服务非常多或应用较复杂情况下,该方式更适合。可基于更大的粒度,来做资源的接管和提升,例如: 以资源为粒度,迁移某种类型的全部资源 以应用为粒度,迁移某个应用涉及的所有类型的资源 此时,就需要资源模板结合集群联邦的调度策略PropagationPolicy,来接管相应资源,可以按如下方式操作。 a.将所有资源的 YAML 配置应用到 集群联邦控制面, 作为集群联邦的 ResourceTemplate。此时,资源模板只会存在联邦控制面,并不会下发任何成员集群; b.编写 PropagationPolicy 调度策略, 并将其应用到集群联邦控制面。 您需要注意以下两个字段: spec.conflictResolution: Overwrite:该字段的值必须是 Overwrite。 spec.resourceSelectors:指定哪些资源需要被迁移。 如果你希望的是将所有Deployment资源提升到联邦控制面管理,则可以配置类似如下的调度策略: shell apiVersion: policy.karmada.io/v1alpha1kind: PropagationPolicymetadata: name: deploymentsppspec: conflictResolution: Overwrite placement: clusterAffinity: clusterNames: member1 priority: 0 resourceSelectors: apiVersion: apps/v1 kind: Deployment schedulerName: defaultscheduler 当前,除了YAML方式创建外,也支持基于前端页面的引导创建。可进入联邦控制台>策略管理>调度策略>创建调度策略页面进行配置; 在以上调度策略配置完成后,联邦实例将进行联邦资源模板与底层的同步与覆盖。一段时间后即可观测到相关工作负载已被联邦实例接管; 3. 基于集群联邦,将服务逐步迁移到目标集群中; 已接管的工作负载,支持按需调整其调度策略及差异化策略,来实现工作负载多集群之间的灵活调度。此时,您可以在联邦控制面中编辑需要迁移工作负载的实例数或调度策略,使其复制分发到目标成员集群中去。 点击进入工作负载>无状态,选在对应的工作负载实例后,点击后侧“全量替换”操作按钮进行编辑: 在编辑页面中,直接跳过模板配置步骤,进入调度与差异化配置页面。通过设置调整集群调度策略,可将工作负载复制分发到目标集群,或按权重拆分部分副本到新集群。如下: 如上图配置,提交更新后,工作负载将在源集群和目标集群中1:1比例部署。 4. 服务验证及终端灰度切流; 该步骤中,用户可基于应用实际架构及服务需求,在验证目标成员服务正常后,实施真实用户流量的逐步切流; 切流过程中,可配合通过调度策略逐步调整工作负载Pod副本在源集群与目标集群之间的分布,并最终全部迁移到天翼云上CCE集群,以实现完整的切流;