配置维护期和排除项

本页面介绍如何使用维护期和维护排除项控制可以和不能在 Google Kubernetes Engine (GKE) 集群上进行自动集群维护(例如自动升级)的时间。

准备工作

在开始之前,请确保您已执行以下任务:

使用以下任一方法设定默认的 gcloud 设置:

  • 使用 gcloud init(如果您想要在系统引导下完成默认设置)。
  • 使用 gcloud config(如果您想单独设置项目 ID、区域和地区)。

使用 gcloud init

如果您收到 One of [--zone, --region] must be supplied: Please specify location 错误,请完成本部分。

  1. 运行 gcloud init 并按照说明操作:

    gcloud init

    如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

    gcloud init --console-only
  2. 按照说明授权 gcloud 使用您的 Google Cloud 帐号。
  3. 创建新配置或选择现有配置。
  4. 选择 Google Cloud 项目。
  5. 为可用区级集群选择默认 Compute Engine 可用区,或为区域级集群或 Autopilot 集群选择区域。

使用 gcloud config

  • 设置默认项目 ID
    gcloud config set project PROJECT_ID
  • 如果您使用的是可用区级集群,请设置默认计算可用区
    gcloud config set compute/zone COMPUTE_ZONE
  • 如果您使用的是 Autopilot 集群或区域级集群,请设置默认计算区域
    gcloud config set compute/region COMPUTE_REGION
  • gcloud 更新到最新版本:
    gcloud components update

配置维护期

为配置维护期,您需要配置开始时间、持续时间和重复频率。例如,您可以配置在每周一至周五出现的维护期。

您可以使用 Google Cloud Console 或 gcloud 命令来配置维护期。

创建一个具有简单维护期的集群

您可以通过指定 --maintenance-window 标志在 gcloud 中创建简单的维护期。通过此标志,您可以使用简化格式指定每日 4 小时的维护期。

如需创建具有简单维护期的新集群,请运行以下命令:

gcloud container clusters create cluster-name \
  --maintenance-window start-time

其中:

  • cluster-name 是新集群的名称。
  • start-time 设置为 24 小时制 UTC 时间戳,如 16:00

维护期每天从指定的 start-time 开始,持续 4 个小时。

创建一个具有维护期的集群

您可以使用 gcloud 工具或 Google Cloud Console 创建具有维护期的新集群。

gcloud

要创建具有维护期的新集群,请运行以下命令:

gcloud container clusters create cluster-name \
  --maintenance-window-start start-time \
  --maintenance-window-end end-time \
  --maintenance-window-recurrence rrule

其中:

  • cluster-name 是新集群的名称。
  • start-time 是一个 RFC-5545 DTSTART。
  • end-time 的格式与 start-time 相同,但仅用于计算维护期的持续时间。end-time 的值必须是相对于 start-time 的未来值。
  • rrule 是一个 RFC-5545 RRULE。这是一种非常灵活的格式,可通过多种方式指定重复规则。

例如,以下命令创建了一个名为 my-cluster 的集群,其维护期的开始时间为 2019 年 8 月 1 日 2:00 AM (UTC),4 个小时后结束,每天运行一次。您可以详细了解格式化日期和时间

gcloud container clusters create my-cluster \
  --maintenance-window-start 2019-08-01T02:00:00Z \
  --maintenance-window-end 2019-08-01T06:00:00Z \
  --maintenance-window-recurrence FREQ=DAILY

控制台

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

  3. 根据需要配置集群。

  4. 在导航窗格的集群下,点击自动化

  5. 选中启用维护期复选框。

  6. 选择开始时间和时长,然后选择在一周中的哪几天安排维护期。如需直接修改重复规则规范 (RRule),请选择自定义编辑器

  7. 点击创建

为现有集群配置维护期

gcloud

如需为现有集群创建或更新维护期,请运行以下命令:

gcloud container clusters update cluster-name \
  --maintenance-window-start start-time \
  --maintenance-window-end end-time \
  --maintenance-window-recurrence rrule

其中:

  • cluster-name 是现有集群的名称。
  • start-time 是一个 RFC-5545 DTSTART。
  • end-time 的格式与 start-time 相同,但仅用于计算维护期的持续时间。end-time 的值必须是相对于 start-time 的未来值。
  • rrule 是一个 RFC-5545 RRULE。这是一种非常灵活的格式,可通过多种方式指定重复规则。

控制台

如需为现有集群创建或修改维护期,请执行以下操作:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 自动化下,点击维护期字段旁边的 修改维护政策

  4. 选中启用维护期复选框。

  5. 选择开始时间和时长,然后选择在一周中的哪几天安排维护期。如需直接修改 RRule,请选择自定义编辑器

  6. 点击保存更改

手动完成未完成的维护

如果升级或其他自动维护需要比维护期更长的时间才能完成,GKE 会尝试停止正在进行的维护任务,并在下一个维护期继续这些任务。如果取消了自动升级,并且您已启用节点自动升级,则您的节点可能处于混合版本状态,但您的集群应该会正常运行。

如需手动升级您的集群,或者取消或回滚部分升级,请访问手动升级集群

移除维护期

gcloud

如需从集群中移除维护期,请运行以下命令:

gcloud container clusters update cluster-name --clear-maintenance-window

其中 cluster-name 是现有集群的名称。

控制台

如需移除维护期,请执行以下操作:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 自动化下,点击维护期字段旁边的 修改维护政策

  4. 取消选中启用维护期复选框。

  5. 点击保存更改

维护期示例

以下示例介绍了配置维护期的一些不同方法。示例仅显示相关标志,因为这些标志使用相同的语法来创建新集群或更新现有集群。

2019 年 8 月 27 日起,每周二和周三全天

在此示例中,起始时间戳和结束时间戳之间的时间差为一整天,因此维护期在周二和周三均持续 24 小时。

--maintenance-window-start 2019-08-27T00:00:00Z \
--maintenance-window-end 2019-08-28T00:00:00Z \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=TU,WE'
每个工作日 9:00-17:00 (UTC-4)

此示例展示了如何设置每日维护期,同时跳过周末。此示例指定的是非 UTC 时区。

--maintenance-window-start 2019-09-02T09:00:00-04:00 \
--maintenance-window-end 2019-09-02T17:00:00-04:00 \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR'
每周下午 4 点,持续 8 小时 (UTC-7)

如果您没有为 --maintenance-window-start 指定时区,则使用 Google Cloud 帐号中配置的本地时间。Google Cloud Console 始终使用本地时间。

--maintenance-window-start 2019-08-13T16:00:00-7:00 \
--maintenance-window-end 2019-08-14T00:00:00-7:00 \
--maintenance-window-recurrence FREQ=WEEKLY

配置维护排除项

如需配置维护排除项,请配置其名称(可选)、开始时间和结束时间。维护排除项可以持续多日。

维护排除期必须在 32 天的滚动期中留出 48 小时的维护时间。维护期的持续时间会直接影响最长维护排除期,您可以使用以下公式计算最长维护排除期:

maximum maintenance exclusion (days) = 32-day rolling window - 48 hours maintenance availability / maintenance window hours per day

例如,如果您的正常维护期为 4 小时,则最长维护排除期为 20 天:(32 - 48/4 = 20)。

您可以随时在集群上配置最多 3 个维护排除项。您可以手动移除维护排除项,无论它们是否已经出现。

您可以使用 Google Cloud Console 或 gcloud 命令来配置维护排除项。

创建具有维护排除项的集群

如需创建具有维护排除项的集群,请执行以下操作:

  1. 转到 Cloud Console 中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

  3. 根据需要配置集群。

  4. 在导航窗格的集群下,点击自动化

  5. 维护排除项下,点击 添加维护排除项

  6. 选择开始时间结束时间

  7. 点击创建

您可以查看黑色星期五的维护排除项示例。

为现有集群配置维护排除项

gcloud

如需为现有集群配置维护排除项,请运行以下命令:

gcloud container clusters update CLUSTER_NAME \
  --add-maintenance-exclusion-name EXCLUSION_NAME
  --add-maintenance-exclusion-start START_DATE_TIME \
  --add-maintenance-exclusion-end END_DATE_TIME

请替换以下内容:

  • CLUSTER_NAME:您的集群的名称。
  • EXCLUSION_NAME:维护排除项的名称。
  • START_DATE_TIME:排除项的开始日期和时间。
  • END_DATE_TIME:排除项的结束日期和时间。

如需查看支持的日期和时间格式,请运行 gcloud topic datetimes

控制台

如需为现有集群配置维护排除项,请执行以下操作:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 自动化下方的维护排除项字段旁边,点击 修改维护排除项

  4. 维护排除项下,点击 添加维护排除项

  5. 选择开始时间结束时间

  6. 点击保存更改

移除维护排除项

一个集群在任意时间最多可以有 3 个有效、未过时的维护排除项。

gcloud

如需移除现有维护排除项,请运行以下命令:

gcloud container clusters update cluster-name \
  --remove-maintenance-exclusion exclusion-name

其中:

  • cluster-name 是现有集群的名称。
  • exclusion-name 是要移除的维护排除项的名称。

控制台

如需从现有集群中移除维护排除项,请执行以下操作:

  1. 访问 Cloud Console 中的 Google Kubernetes Engine 菜单。

    访问 Google Kubernetes Engine 菜单

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 自动化下方的维护排除项字段旁边,点击 修改维护排除项

  4. 维护排除项下,点击所要移除排除项的结束时间旁的 删除项

  5. 点击保存更改

如需查看集群上的所有维护排除项,您可以查看集群的维护政策

维护排除项示例

以下示例可避免在黑色星期五网购星期一(一年内许多零售业务销量最高的时段)的四天内进行维护。此示例展示了如何避免在 2019 年的黑色星期五(2019 年 11 月 29 日)到 2019 年的网购星期一(2019 年 12 月 2 日)期间出现维护期,具体时间段为东海岸午夜零点 (UTC-5) 至西海岸 23:59:59 (UTC-7)。

gcloud container clusters update sample-cluster \
 --add-maintenance-exclusion-name black-friday \
 --add-maintenance-exclusion-start 2019-11-29T00:00:00-05:00 \
 --add-maintenance-exclusion-end 2019-12-02T23:59:59-07:00

查看集群的维护政策

如需查看集群的维护政策(包括是否具有维护期及其所有维护排除项),请使用以下命令:

gcloud container clusters describe cluster-name

后续步骤