代管式控制平面现代化

Google 将逐步更新使用 ISTIOD 管理控制平面实现的现有车队,以使用 TRAFFIC_DIRECTOR 实现。默认情况下,Google 会自动迁移您的车队,但您也可以选择自行推动迁移。如需检查您的车队使用的是哪种控制平面,请参阅检查控制平面实现

在准备更新车队时,请考虑以下事项:

  1. 为做好现代化改造准备,您可以通过以下两种方式控制该流程:

    • Google 主导的自动迁移(默认)- 您可以使用由 Google 主导的现代化中的说明自定义集群的现代化顺序。

    • 客户主导型迁移(可选)- 您可以选择根据客户主导型现代化中的说明为车队添加标签,以推动车队实现现代化。

  2. 默认采用 Google 主导的现代化方式。启用此选项后,Google 会确定您的车队何时可以进行现代化改造。Google 会安排对您的车队进行现代化改造,并会在开始该流程之前通知您。

  3. 对集群进行现代化改造后,系统会重启使用代理的工作负载。如果您遵循 Kubernetes 最佳实践,这不应导致服务中断。此外,如果您已配置维护窗口,Google 会在维护窗口期间触发现代化。开始后,该作业会一直运行到完成,并再过 6 天“过渡”时间后才会被标记为“已完成”。如果监控检测到问题,您可以申请回滚。

  4. 对于以客户为导向的现代化改造,Google 会在您的车队准备好进行现代化改造时通知您。然后,您可以按集群选择何时触发现代化。完成后,您可以将每个车队现代化标记为已完成。

  5. 更新车队后,Google 会移除所有基于 Istiod 的组件。

  6. TRAFFIC_DIRECTOR 控制平面实现要求您的集群注册到已启用网格功能的舰队。如果您使用旧版工具完成了初始配置,Google 会使用 gkehub.googleapis.com Membership API 自动将您的集群注册到其项目的舰队。如果您有任何用于取消注册集群的自动化操作,则必须先将其移除,然后才能进行现代化改造。

Google 赋能的现代化

如果您未为车队添加标签以实现以客户为导向的现代化,则此选项为默认选项。Google 会监控您的车队,以确定何时可以安全升级。当贵组织中所有启用了网状网络的车队都准备就绪后,我们会安排对贵组织进行现代化改造。

多个车队

如果贵组织有多个包含托管式 Cloud Service Mesh 的舰队,您可以通过将 mesh-modernization-order 的项目标签设置为以下值之一(earlydefaultlate)来控制 Google 对舰队进行现代化改造的顺序。Google 会先完成每个组的现代化,然后再开始对下一组中的任何车队进行现代化改造。在这种排序中,系统不会考虑您选择以客户为导向进行现代化的车队。

使用以下命令为车队设置 mesh-modernization-order 标签:

gcloud alpha projects update FLEET_PROJECT_ID --update-labels="mesh-modernization-order=VALUE"

如需了解如何使用 Cloud 控制台或 REST 设置项目标签,请参阅创建和管理标签文档。

如果您不使用 Google Cloud 组织,则您的车队将独立安排升级时间和升级版本,您无法控制升级顺序。

多集群网格

如果车队中有多个使用托管式 Cloud Service Mesh 的集群,您可以通过将 mesh-modernization-order 的集群标签设置为以下值之一(earlydefaultlate)来控制 Google 对这些集群进行现代化改造的顺序。Google 将开始对每个组进行现代化改造,并等待自动化现代化步骤完成,然后再开始对下一个组中的任何集群进行现代化改造。请注意,这种排序仅适用于一个车队,不会影响贵组织中可能正在并行进行现代化改造的其他车队。

使用以下命令为集群设置 mesh-modernization-order 标签:

gcloud container clusters update CLUSTER_NAME \
  --location LOCATION \
  --update-labels="mesh-modernization-order=VALUE"

以客户为导向的现代化

您可以选择在车队一级自行控制升级的确切时间。为此,请使用以下命令在舰队宿主项目上应用标签

gcloud alpha projects update FLEET_PROJECT_ID \
  --update-labels="mesh-modernization-mode=manual"

请注意,如果您的 Google Cloud 组织有多个车队,则系统会安排未标记的所有车队进行 Google 主导的现代化改造。

当您的车队符合升级条件后,您会在舰队级功能状态中收到通知。您必须在收到本通知后的 3 个月内触发现代化。

本文档将更新,以详细介绍如何手动触发现代化。订阅 Cloud Service Mesh 版本说明 Feed 以接收通知。

主动进行 Google 主导的迁移现代化改造

本部分介绍了 Google 主导的现代化改造的步骤。

对车队进行现代化改造

Google 会主动对贵组织的每个车队进行现代化改造。 这意味着,对于每个车队,系统都会执行以下步骤:

  1. 使用 earlymesh-modernization-order 对所有集群进行现代化改造。
  2. mesh-modernization-order 设为 default 或未指定的所有集群都进行现代化改造。
  3. 使用 latemesh-modernization-order 对所有集群进行现代化改造。
  4. 等待每个集群的现代化都标记为已完成。也就是说,在重启此车队中任何集群中的最后一个 Pod 后,至少等待 6 个工作日。
  5. 完成此舰队的现代化改造,最终移除基于 Istiod 的组件。

对集群进行现代化改造

在积极改造集群期间,两个控制平面实现会暂时并排运行,并以安全可控的方式处理以下任务:

  1. 启用新的控制平面实现。如果您为集群配置了维护窗口,并且使用的是 Google 主导的现代化功能,则此步骤将在维护窗口期间开始,并持续到完成。
    • 如需启用健康检查,系统会在集群的 kube-system 命名空间中创建 snk 守护进程集,并创建按集群的防火墙规则。
  2. 将流量转移到新的控制平面实现。如果您为集群配置了维护窗口,并且使用 Google 主导的现代化功能,此步骤将在维护窗口期间开始,并持续到完成。
    • 由 Kubernetes 部署管理且具有 Cloud Service Mesh 代理的 pod 会重启,以便它们重新连接到新的控制平面。
    • Pod 会以越来越大的波次重启,每个波次后都有浸泡时间以进行监控。
  3. 集群的现代化需要至少 6 个工作日的浸泡时间,之后才能标记为已完成。

您可以使用以下 Google Cloud CLI 命令来检查当前的现代化状态:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

您会在每个集群的 membershipStates 字段中看到类似以下条件之一:

...
membershipStates:
  projects/FLEET_PROJ/locations/us-central1/memberships/MEMBERSHIP:
    servicemesh:
      conditions:
      - code: MODERNIZATION_IN_PROGRESS
        details: ...
        documentationLink: ...
        severity: INFO
...
      # If you see this, see instructions provided in the details and documentationLink fields.
      - code: MODERNIZATION_ACTION_REQUIRED
        details: [details about required actions]
        documentationLink: [link to documentation for required actions]
        severity: WARNING
...
      - code: MODERNIZATION_COMPLETED
        details: ...
        documentationLink: ...
        severity: INFO

安排和通知

您应该会在集群安排更新前至少两周收到通知。您可以在集群级地图项状态条件中使用通知。

使用以下 Google Cloud CLI 命令查看通知:

gcloud container fleet mesh describe --project=FLEET_PROJECT_ID

您会看到如下所示的结果:

membershipStates:
  projects/656460026795/locations/us-central1/memberships/cluster:
    servicemesh:
      conditions:
      - code: MODERNIZATION_SCHEDULED
        details: This cluster has been scheduled for modernization on or after (date ~ at least 2 weeks).
        documentationLink: 
        severity: INFO