You need to enable JavaScript to run this app.
导航

资源冲突策略

最近更新时间2023.12.13 19:07:10

首次发布时间2023.07.31 10:07:45

主控实例向成员集群分发资源时,若目标成员集群已经存在同类同名资源,将产生资源冲突。分布式云原生平台针对资源冲突场景提供接管策略和冲突策略两种,可根据实际情况按需选择。

接管策略

配置资源部署配置时,若勾选 冲突资源接管 中的 接管 选项,表示使用接管策略,当成员集群中已经存在待分发的同名资源时,将通过联邦资源统一接管已存在的资源。接管策略的详细执行规则如下:

  • 针对不存在资源冲突的成员集群,直接分发并创建资源。

  • 针对存在资源冲突的成员集群,将接管已存在资源,并根据资源配置,决定是否进行资源更新。

alt

该场景下,主控实例和成员集群的资源创建和分发行为如下:

  • 主控实例:根据配置创建资源,并添加kubeadmiral.io/clusters-to-adopt: {"clusters": ["fcccl1sa******em0lnng", "fcccl0******33b8g"]}注解,其中 clusters 为成员集群 ID。添加此注解表明该资源冲突时的策略为接管,且针对指定成员集群的资源接管生效。

注意

2023年01月23日之前创建的主控实例不支持指定集群,接管默认全部集群生效。

alt

  • 成员集群:资源分发到成员集群后将自动添加kubeadmiral.io/managed: "true"标签,用于分发资源标识。同时,接管资源会被额外添加kubeadmiral.io/adopted: true注解。

注意

  • 若为分发的新建资源手动添加 kubeadmiral.io/adopted: true注解,同样将被作为接管资源。
  • 若目标接管资源的配置中存在不可修改字段,将导致接管失败,例如:Secret 中的类型。
  • 针对工作负载接管场景,若分发资源与目标接管资源的 Pod 定义内容存在变更,接管过程将导致 Pod 重启,可能影响业务正常运行。因此,建议分发资源与目标接管资源的配置内容保持一致,此时将不会因接管导致 Pod 重启。

冲突策略

配置资源部署配置时,若不勾选 冲突资源接管 中的 接管 选项,表示使用冲突策略,当成员集群中已经存在待分发的同名资源时,将会出现资源冲突错误,已存在的资源不受影响,待分发资源分发失败。冲突策略的执行规则如下:

  • 针对不存在资源冲突的成员集群,直接分发并创建资源。

  • 针对存在资源冲突的成员集群,主控实例侧报错,不进行资源分发。

alt

该场景下,主控实例和成员集群的资源创建和分发行为如下:

  • 主控实例:根据配置创建云原生资源。对于存在冲突的成员集群,分发失败并给出错误提示。在 集群分发状态 列中,单击 查看,可以看到分发失败的原因为已存在冲突资源。

alt

alt

  • 成员集群:由于主控实例会终止冲突资源分发,因此,成员集群中已经存在的资源,不会受到任何影响。