使用自定义阶段对集群升级的发布进行排序

本文档介绍了如何管理使用具有自定义阶段的发布序列的 Google Kubernetes Engine (GKE) 集群升级。您可以使用整理到舰队中的集群组以及这些舰队中的集群子集(可选)来创建发布序列。您可以选择在一个组中完成集群升级后您所需的过渡测试时长(最多 30 天)。您可以同时包含 Autopilot 和 Standard 集群。 如需详细了解此功能的工作原理,请参阅关于使用自定义阶段的发布序列

如果您跨多个舰队管理发布,建议您使用专用项目来托管 RolloutSequence 对象。此项目充当序列中所有发布版本的父级和协调器。此项目通常不属于序列;也就是说,此项目不包含属于序列的舰队或集群。

准备工作

  • 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

    gcloud init

    如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  • 确保您已有 Autopilot 或 Standard 集群。如需创建新集群,请参阅创建 Autopilot 集群
  • (可选)如果您还没有专门用于托管 RolloutSequence 配置的 Google Cloud 项目,请使用 Google Cloud 控制台或其他方法创建一个。
  • 确保您已启用舰队所需的 API。您必须在舰队宿主项目中启用这些 API,才能创建任何类型的发布序列。为发布序列宿主项目启用 gkehub.googleapis.com API。
  • 对于 Terraform 说明,请确保您使用 google 提供方 7.39.0 版或更高版本。

所需的角色

如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色

如需创建或修改发布序列,您必须在发布序列中的每个舰队宿主项目和发布序列宿主项目中拥有 Fleet Editor IAM 角色 (roles/gkehub.editor)。此角色可提供以下权限:

  • gkehub.rolloutsequences.create
  • gkehub.rolloutsequences.get
  • gkehub.rolloutsequences.list
  • gkehub.rolloutsequences.update
  • gkehub.rolloutsequences.delete
  • gkehub.fleet.update

这些权限可让您创建、访问和修改 RolloutSequence 对象,以及在发布序列中使用舰队。

如果您需要向舰队注册或从舰队中取消注册集群,则需要具备以下所有权限:

如果您拥有相应项目的必要权限,则可以使用托管在一个或多个组织的项目中的舰队来创建发布序列。

如需详细了解不同任务所需的最小权限 IAM 角色,请参阅在 Gemini 的协助下获取预定义角色建议

配置发布顺序

如需创建发布序列,必须将您的集群整理到舰队组中。您还可以创建精细的阶段,以便使用 Kubernetes 标签定位舰队中的特定集群子集。如需了解如何整理集群,请参阅社区银行示例。将集群分组并视需要为其添加标签后,您可以通过定义阶段的有序列表以及每个群组的过渡时间来创建发布序列。

将集群整理到舰队中

在发布序列中,我们建议在同一发布渠道中注册所有集群。如果集群未在同一渠道中注册,GKE 会从序列中最保守的渠道中选择一个版本。例如,如果集群同时在稳定渠道和常规渠道中注册,GKE 会选择稳定渠道中的版本。我们还建议所有集群运行相同的次要版本,以便符合相同的自动升级目标版本条件。

如果您已将集群整理到舰队中,则可以跳过以下步骤并继续执行创建集群子集部分。

  1. 将集群分组到舰队中。您可以按部署环境(例如测试、预演和生产环境)整理集群(推荐)。
  2. 根据您选择的分组向舰队注册每个集群

创建集群子集(可选)

如需让发布序列中的某个阶段以特定集群为目标,您必须为这些集群添加标签。

例如,若要在全面推出之前先在一小部分集群上测试新版本,您可以为这些集群应用 canary 标签。如需使用 Google Cloud CLI 向集群添加值为 truecanary 标签,请运行以下命令:

gcloud container clusters update CLUSTER_NAME \
    --location=CLUSTER_LOCATION\
    --update-labels=canary=true

替换以下内容:

--update-labels=canary=true 标志指示 GKE 将 canary 标签应用于集群。

如需详细了解如何为集群添加标签,请参阅为现有集群添加或更新标签

创建具有自定义阶段的发布序列

使用自定义阶段的发布序列通过声明性地定义阶段来定义升级顺序。使用 gcloud CLI 时,您需要使用 YAML 文件;使用 Terraform 时,您需要向配置中添加资源块。在执行本部分中所述的步骤时,您将创建一个 RolloutSequence

为确保序列捕获所有集群,每个舰队都必须包含一个全捕获阶段(没有标签选择器的阶段)。此全捕获阶段会捕获 GKE 在之前阶段未选择的所有剩余集群。如果您在单个 RolloutSequence 内将单个集群分配给多个阶段,为解决冲突,GKE 会隐式地将该集群仅分配给最早的阶段。

以下示例配置会创建三个阶段:

  • 第一阶段的目标是 dev 舰队中的所有集群。升级完成后,会有 7 天的过渡时间 (7d)。
  • 第二阶段的目标是 prod 舰队中具有 canary=true 标签的集群。升级完成后,需要 7 天的过渡时间 (7d)。
  • 第三阶段的目标是 prod 舰队中的其余集群。升级完成后,需要 7 天的过渡时间 (7d)。

gcloud

  1. 将以下清单保存为 rollout-sequence.yaml

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 7d
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
      label-selector: resource.labels.canary=='true'
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 7d
    

    请注意以下几点:

    • stage:包括舰队或舰队中的部分集群。 在序列进入下一阶段之前,必须先将早期阶段的集群完全升级并过渡。不过,如果集群在升级过程开始 30 天后仍未完成升级,GKE 便会开始过渡期。
    • fleet-projects:一个舰队列表,用于从此列表中选择此阶段的集群。每个阶段最多可引用一个舰队。舰队由托管该舰队的项目进行标识。如果舰队包含跨项目成员资格,则此项目可以与集群所在的项目不同。指定 Fleet 项目的格式为 projects/PROJECT_ID
    • label-selector(可选):从指定的舰队中选择一部分集群。此字段使用通用表达式语言 (CEL) 语法,并且必须以 resource.labels 开头。
    • soak-duration:在升级完前一阶段的所有集群后,等待多长时间再继续下一阶段。以秒、分钟、小时和天为单位表示。
  2. 如需创建在 rollout-sequence.yaml 清单中定义的发布序列,请运行以下命令:

    gcloud container fleet rolloutsequences create ROLLOUT_SEQUENCE_NAME \
        --display-name=DISPLAY_NAME \
        --stage-config=rollout-sequence.yaml
    

    替换以下内容:

    • ROLLOUT_SEQUENCE_NAME:符合 RFC-1034 规范的不可变标识符,例如 test-rollout-sequence
    • DISPLAY_NAME:用于发布序列的人类可读字符串。

Terraform

本部分介绍了如何使用 Terraform 创建具有自定义阶段的发布序列。您还可以使用此资源来更新该序列。如需了解详情,请参阅 google_gke_hub_rollout_sequence 的参考文档。

  1. 将以下块添加到 Terraform 配置中,以创建发布序列资源:

    resource "google_gke_hub_rollout_sequence" "rollout_sequence" {
      rollout_sequence_id = "ROLLOUT_SEQUENCE_NAME"
      display_name        = "DISPLAY_NAME"
      stages {
        fleet_projects = ["projects/dev"]
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        cluster_selector {
          label_selector = "resource.labels.canary=='true'"
        }
        soak_duration  = "7d"
      }
      stages {
        fleet_projects = ["projects/prod"]
        soak_duration  = "7d"
      }
    }
    

    替换以下内容:

    • ROLLOUT_SEQUENCE_NAME:符合 RFC-1034 规范的不可变标识符,例如 test-rollout-sequence
    • DISPLAY_NAME:用于发布序列的人类可读字符串。

发布特定版本

您可以将特定版本发布到发布序列中。如需了解详情,请参阅发布特定版本

您可以将版本发布到发布序列中集群的控制平面或节点。

在发布序列中向控制平面发布版本

运行以下命令:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME\
    --control-plane-version="CONTROL_PLANE_VERSION"

替换以下内容:

  • ROLLOUT_SEQUENCE_NAME:发布序列的名称。
  • CONTROL_PLANE_VERSION:要推出的版本。您可以选择特定版本(例如 1.34.7-gke.1055000),也可以使用版本别名。如需了解详情,请参阅指定集群版本

将版本发布到发布序列中的节点

运行以下命令:

gcloud container fleet rolloutsequences upgrade ROLLOUT_SEQUENCE_NAME \
    --node-version="NODE_VERSION"

替换以下内容:

  • ROLLOUT_SEQUENCE_NAME:发布序列的名称。
  • NODE_VERSION:要推出的版本,例如 1.34.7-gke.1055000

检查发布的状态

配置发布顺序后,系统会自动创建 Rollout 对象来管理升级。您可以使用 Google Cloud CLI 命令来观察和跟踪这些对象的进度。

列出发布

如需列出发布序列宿主项目中的所有有效和历史发布,请运行以下命令:

gcloud container fleet rollouts list --project=HOST_PROJECT_ID

HOST_PROJECT_ID 替换为您的发布序列宿主项目的 ID。

如果您已位于托管发布序列的项目中,则可以省略 --project=HOST_PROJECT_ID 标志。

输出类似于以下内容:

NAME                                              STATE      CREATE_TIME
05eb251e4f19269e23-node-1-33-5-gke-1201000-t7mqd  COMPLETED  2025-10-30T20:07:46
05eb251e4f19269e23-kcp-1-33-5-gke-1201000-djwst   COMPLETED  2025-10-30T18:07:06
05eb251e4f19269e23-node-1-33-5-gke-1125000-6bxvu  COMPLETED  2025-10-23T17:46:54
05eb251e4f19269e23-kcp-1-33-5-gke-1125000-2f6ct   RUNNING    2025-10-23T16:41:33

在上述输出中,包含 kcp 的发布版本名称是指控制平面升级,而包含 node 的名称是指节点升级。推出名称中 kcpnode 之后的段派生自 GKE 版本。

描述发布

如需获取有关特定发布的详细信息,包括目标版本、状态以及已升级的集群,请使用 describe 命令,并提供从上一个命令中获取的发布 ID:

gcloud container fleet rollouts describe ROLLOUT_ID \
  --project=HOST_PROJECT_ID

替换以下内容:

  • ROLLOUT_ID:您在列出发布版本时获得的发布版本 ID。
  • HOST_PROJECT_ID:发布序列托管到的项目 ID。

例如:

gcloud container fleet rollouts describe 927e9a989930cf3b55-kcp-1-32-4-gke-1106006 \
  --project=my-hostfleet

输出类似于以下内容:

createTime: '2025-05-26T11:47:29.909959672Z'
membershipStates:
  projects/dev-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T12:20:55.601542481Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-1234567890-abcdefg-hijklm-nopqrst
      state: SUCCEEDED
    stageAssignment: 1
  projects/dev-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T12:22:57.151203493Z'
    targets:
    - cluster:   projects/dev-project-id/locations/us-central1/clusters/c-2
      operation: //container.googleapis.com/v1/projects/dev-project-id/locations/us-central1/operations/operation-987654321-ghijkl-mno-pqr-stu-vwxyz
      state: SUCCEEDED
    stageAssignment: 1
  projects/prod-project-id/locations/us-central1/memberships/c-1:
    lastUpdateTime: '2025-05-26T13:03:34.134308942Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-567891234-efghij-klm-nopq-rstu-vwxyz
      state: SUCCEEDED
    stageAssignment: 2
  projects/prod-project-id/locations/us-central1/memberships/c-2:
    lastUpdateTime: '2025-05-26T13:06:34.025261641Z'
    targets:
    - cluster: projects/prod-project-id/locations/us-central1/clusters/c-1
      operation: //container.googleapis.com/v1/projects/prod-project-id/locations/us-central1/operations/operation-765432198-01a7b896-67c2-523-6fjjh4-icmdydh
      state: SUCCEEDED
    stageAssignment: 2
name: projects/user-hostfleet/locations/global/rollouts/05eb251e4f19269e23-kcp-1-32-4-gke-1106006
rolloutSequence: projects/project-id/locations/global/rolloutSequences/my-sequence
state: COMPLETED
updateTime: '2025-07-22T07:36:51.052691989Z'
versionUpgrade:
  desiredVersion: 1.32.4-gke.1106006
  type: TYPE_CONTROL_PLANE
stages:
- state: COMPLETED
  endTime: '2025-05-26T12:22:28.828506491Z'
  stageNumber: 1
  startTime: '2025-05-26T11:48:28.772658427Z'
  soakDuration: 600s
- state: COMPLETED
  endTime: '2025-05-26T13:06:20.026390832Z'
  stageNumber: 2
  startTime: '2025-05-26T12:32:38.419372153Z'
  soakDuration: 600s

发布的状态信息

在描述发布时,输出的 stagesmembershipStates 字段分别提供每个阶段以及该阶段内每个集群的进度状态。

下表列出了阶段的潜在状态:

状态 说明
PENDING 此阶段的升级尚未开始。
RUNNING 此阶段的升级正在进行中。如果您为阶段中的集群配置了维护窗口,则 GKE 会等待窗口打开,然后再升级集群。
SOAKING 此阶段中的所有集群都已完成升级,并且该阶段正处于配置的过渡期。
FORCED_SOAKING 升级所用时间超过了最长升级时间(30 天),因此 GKE 强制启动了过渡阶段。升级仍会在任何剩余集群上继续进行。
COMPLETED 阶段已完成过渡,发布作业将继续进入下一阶段。

下表列出了序列中集群的潜在状态:

状态 说明
PENDING 此集群上的升级待处理。
INELIGIBLE 此集群不符合升级条件,可能是由于版本不一致。输出中提供了不符合条件的原因。
RUNNING 此集群正在升级。
SUCCEEDED 此集群上的升级已成功完成。
FAILED 此集群的升级失败。如果目标失败,系统会在其阶段处于有效状态(处于 RUNNINGFORCED_SOAKING 状态)时无限期地重试。

管理发布

您可以按照以下部分中的说明管理单个发布。如需详细了解如何管理发布以及您可以采取的相应操作,请参阅管理发布

如需管理整个发布序列,而不仅仅是某个特定发布,请参阅以下部分:管理发布序列

暂停发布

您可以暂停正在进行的发布。如需详细了解此操作,请参阅暂停发布

如需暂停发布,请运行以下命令:

gcloud container fleet rollouts pause ROLLOUT_ID

ROLLOUT_ID 替换为要暂停的发布版本的 ID。如需获取发布序列中各发布的发布 ID,请参阅列出发布

恢复发布

您可以恢复暂停时间不超过 90 天的暂停发布。如需详细了解此操作,请参阅恢复发布

如需恢复已暂停的发布,请运行以下命令:

gcloud container fleet rollouts resume ROLLOUT_ID

ROLLOUT_ID 替换为要恢复的发布版本的 ID。如需获取发布序列中各发布的发布 ID,请参阅列出发布

取消发布

您可以取消发布,包括处于有效状态或已暂停的发布。您无法取消强制性自动升级的发布。 如需详细了解如何取消发布,请参阅取消发布

如需取消发布,请运行以下命令:

gcloud container fleet rollouts cancel ROLLOUT_ID

ROLLOUT_ID 替换为您要取消的发布版本的 ID。如需获取发布序列中各发布的发布 ID,请参阅列出发布

完成发布阶段

如果您已准备好让升级进入下一阶段,则可以完成发布阶段。如需详细了解此操作,请参阅完成发布阶段

如需完成发布阶段,请运行以下命令:

gcloud container fleet rollouts force-complete-stage ROLLOUT_ID \
    --stage=STAGE

替换以下内容:

  • ROLLOUT_ID:您要完成阶段的发布版本的 ID。如需获取发布序列中各发布的发布 ID,请参阅列出发布
  • STAGE:您要立即完成的阶段。例如,如果您想完成第二阶段,请输入 2。必须处于运行或浸泡阶段才能使用此命令。

在特定发布序列中忽略某个集群

如果您不希望集群作为有效发布的一部分进行升级,则可以指示 GKE 忽略发布序列中的某个集群。不过,此操作会从有效发布和未来发布(而不仅仅是有效发布)的发布序列中移除相应集群。

如需执行此操作以防止集群在活跃的发布中升级,请参阅在发布序列中忽略集群

管理发布序列

您可以采用多种方式通过发布序列控制自动集群升级,如以下部分所述。

如果您想管理发布序列中的某次发布,而不是整个发布序列及其所有发布,请参阅管理发布

列出发布序列

如需列出宿主项目中的所有发布序列,请运行以下命令:

gcloud container fleet rolloutsequences list --project=HOST_PROJECT_ID

HOST_PROJECT_ID 替换为您的发布序列宿主项目的 ID。

描述发布序列

如需查看特定发布序列的详细信息,请运行以下命令:

gcloud container fleet rolloutsequences describe ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

替换以下内容:

  • ROLLOUT_SEQUENCE_NAME:发布序列的名称。
  • HOST_PROJECT_ID:发布序列宿主项目的 ID。

输出类似于以下内容:

createTime: '2025-10-23T16:40:16.403871189Z'
displayName: my-display-name
name: projects/HOST_PROJECT_ID/locations/global/rolloutSequences/ROLLOUT_SEQUENCE_NAME
stages:
- clusterSelector:
    labelSelector: resource.labels.canary=='true'
  fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 600s
- fleetProjects:
  - projects/FLEET_PROJECT_ID
  soakDuration: 300s
uid: 5c5b2ac8-9d76-45f9-92ca-5e6bd3fbcaef
updateTime: '2025-10-23T17:11:57.285678399Z'

选择 GKE 在发布序列中执行的升级类型

默认情况下,GKE 会按发布顺序执行所有类型的集群升级。您可以在发布序列中限制集群升级的范围,以仅执行特定类型的升级。如需了解相关信息,请参阅选择 GKE 在发布序列中执行的升级类型

如需指定您希望 GKE 在发布序列中执行的升级类型,请运行以下命令:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --auto-rollout-scope=TYPES_OF_UPGRADES

替换以下内容:

  • ROLLOUT_SEQUENCE_NAME:发布序列的名称。
  • TYPES_OF_UPGRADES:要执行的升级列表,可以是以下内容:

    • all:默认值,GKE 会按发布顺序执行所有类型的集群升级。
    • none:GKE 不会执行发布序列中的任何集群升级,但强制自动升级的发布除外。
    • 以下一项或多项;如果有多项,请将这些值放在一个以英文逗号分隔且不含空格的列表中:

      例如,如果您希望仅在发布序列中发布补丁版本,请指定 control-plane-patch,nodes-patch

修改发布序列

创建发布序列后,您可以对其进行修改。根据您管理发布序列的方式,按照以下说明修改发布序列。

gcloud

如果您使用 gcloud CLI 管理发布序列,可以修改定义序列的 YAML 配置文件。例如,您可以更新某个阶段的过渡时间,也可以更新阶段来更改升级顺序。修改完文件后,应用更改。

例如,如果您在名为 rollout-sequence.yaml 的文件中定义了原始发布序列,请根据需要修改该文件。然后运行以下命令:

gcloud container fleet rolloutsequences update test-rollout-sequence \
  --display-name="My Updated Rollout Sequence" \
  --stage-config=rollout-sequence.yaml

Terraform

如果您使用 Terraform 管理发布序列,请修改您在创建发布序列时添加到 Terraform 配置中的块,以修改发布序列。

忽略发布序列中的集群

您可以让 GKE 忽略发布序列中的某个集群。您可以忽略发布序列中的一个或多个集群。如需了解详情,请参阅在发布序列中忽略集群

如需让 GKE 忽略发布序列中的某个集群,请执行以下步骤:

  1. 向您希望 GKE 忽略的集群添加标签,或使用现有标签。您可以让 GKE 忽略某个标签(例如 status),也可以在某个标签具有特定值(例如 status=quarantine)时忽略该标签。
  2. 将发布序列设置为忽略具有此标签的集群:

    gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
        --ignored-clusters-selector="resource.labels.LABEL_TO_IGNORE"
    

    替换以下内容:

    • ROLLOUT_SEQUENCE_NAME:发布序列的名称。
    • LABEL_TO_IGNORE:GKE 在发布序列中应忽略的集群的标签名称。

这些说明会配置 GKE 以忽略发布序列中的一种标签。如果您想忽略多个标签,或者想创建更复杂的表达式来指定如何忽略具有特定标签的集群,可以使用 CEL 表达式语法将值传递给此标志。所有标签都必须使用 resource.labels. 前缀。

将集群重新添加到发布序列

如果您按照上一部分中的说明让 GKE 忽略发布序列中的集群,则可以撤消此操作。如果您希望 GKE 不再忽略集群,请使用以下命令移除忽略选择器:

gcloud container fleet rolloutsequences update ROLLOUT_SEQUENCE_NAME \
    --ignored-clusters-selector

此命令会重置忽略选择器,以便 GKE 不会忽略序列中的任何集群。

或者,如果您希望 GKE 不忽略特定集群,请从该集群中移除相应标签

删除发布序列

如需删除发布序列,请运行以下命令:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME \
  --project=HOST_PROJECT_ID

替换以下内容:

  • ROLLOUT_SEQUENCE_NAME 替换为发布序列的名称。
  • HOST_PROJECT_ID 替换为您的发布序列宿主项目的 ID。

删除发布序列后,该序列中正在进行的所有发布都会被取消。属于该序列的集群会恢复为其注册的发布渠道的默认自动升级行为。

迁移现有发布序列以使用自定义阶段

如果您使用的是基于舰队的发布序列,则可以创建引用现有舰队的新 RolloutSequence,从而迁移到使用自定义阶段的序列。请注意,此版本的发布序列不支持 Google Cloud 控制台。

如需迁移发布序列,请完成以下步骤:

  1. (可选)在迁移序列之前,请复制当前的发布序列配置。如需复制配置,请执行以下任一操作:

    我们建议您不要删除基于舰队的发布序列,以便在必要时更轻松地恢复到之前的发布序列版本。您无需删除基于舰队的发布序列,即可使具有自定义阶段的发布序列正常运行,因为当两者都存在时,GKE 只会遵循具有自定义阶段的发布序列。

  2. 创建一个专用 Google Cloud 项目来托管您的发布序列。此项目通常不属于序列;也就是说,该项目不包含属于序列的舰队或集群。

  3. 如果您希望发布序列包含舰队中的特定集群,请为这些集群添加标签。这是可选步骤。

  4. 按照使用自定义阶段创建发布序列中的说明操作。

    例如,以下名为 rollout-sequence-migrate.yaml 的清单引用了之前发布序列中的现有舰队。此清单描述了三个阶段,包括 prod 舰队中的 canary 阶段:

    - stage:
      fleet-projects:
      - projects/dev
      soak-duration: 604800s
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
      label-selector: canary=true
    - stage:
      fleet-projects:
      - projects/prod
      soak-duration: 604800s
    

在您为舰队定义新的 RolloutSequence 后,GKE 会立即开始按照新顺序升级舰队,并移除之前的配置。

将包含自定义阶段的发布序列迁移到之前的发布序列

本部分介绍了如何从使用自定义阶段的发布序列恢复为基于舰队的发布序列模型。此过程涉及删除新的 RolloutSequence 并恢复基于舰队的原始配置。

防止在迁移期间发生升级顺序错误

为避免在重新配置序列时发生意外或无序升级,请为生产集群应用维护排除项。此步骤会暂时暂停这些集群上的所有自动升级。例如,您可以为生产集群配置类型为 no upgrades 的维护排除项。

删除发布序列

删除用于管理集群的 RolloutSequence 对象。此删除操作会停用自定义阶段功能。

如需删除 RolloutSequence,请运行以下命令:

gcloud container fleet rolloutsequences delete ROLLOUT_SEQUENCE_NAME

ROLLOUT_SEQUENCE_NAME 替换为发布序列的名称。

恢复之前的发布序列配置(不含自定义阶段)

删除 RolloutSequence 后,您可以恢复基于舰队的原始配置。此过程涉及使用原始参数重新创建 clusterupgrade 功能,包括序列中每个舰队的 upstreamFleet 链接和过渡时间。如需了解详情,请参阅创建发布顺序

移除维护排除项

恢复基于舰队的原始发布序列配置后,移除您在本部分的第一步中应用的维护排除项。GKE 会恢复自动升级,现在由您恢复的基于舰队的序列来管理。

后续步骤