配置节点池的超额配置更新

本文档介绍如何启用和管理节点池的超额配置更新。如需了解节点池的超额配置更新的工作原理,请参阅超额配置更新简介

运行超额配置更新之前的注意事项

在运行超额配置更新之前,请注意以下事项:

  • 此超额配置步骤中额外创建的实例可能会超出您的 AWS 实例配额限制。如果您没有足够的配额,并且无法预配这些额外的实例,更新可能会失败。
  • 如果 max-unavailable-update 设置为 0,则在 Pod 被逐出并重新调度到较新节点上时,工作负载可能仍会中断。
  • 可以同时更新的最大节点数等于 max-surge-updatemax-unavailable-update 的总和,限制为 20。

启用并配置超额配置更新

如需启用超额配置更新,请与 Google Cloud 支持团队联系。支持团队启用该功能后,您可以在创建或更新节点池时将值分配给 max-surge-updatemax-unavailable-update 参数:

创建

gcloud container aws node-pools create NODE_POOL_NAME
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --max-surge-update MAX_SURGE \
    --max-unavailable-update MAX_UNAVAILABLE

更新

gcloud container aws node-pools update NODE_POOL_NAME
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --max-surge-update MAX_SURGE \
    --max-unavailable-update MAX_UNAVAILABLE

替换以下内容:

  • NODE_POOL_NAME:要更新的节点池的名称。
  • CLUSTER_NAME:集群的名称。
  • GOOGLE_CLOUD_LOCATION:管理集群的受支持的 Google Cloud 区域。例如 us-west1
  • MAX_SURGE:在更新期间可以临时创建的超出当前节点池大小的额外节点数上限。通过调整此值,您可以控制同时更新的节点数。默认设置为 1,但您可以将其设置为 0。 如果将 max-surge-update 设置为大于 0 的值,则 GKE on AWS 会创建超额配置节点;将其设置为 0 会阻止创建。
  • MAX_UNAVAILABLE:在更新过程中可以同时不可用的节点数上限。通过增加此值,可以同时更新更多节点。默认值为 0,但可以向上调整。

检查节点池上的超额配置更新设置

如需查看节点池的超额配置更新设置,请运行以下命令:

gcloud alpha container aws node-pools describe NODE_POOL_NAME
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \

替换以下内容:

  • NODE_POOL_NAME:节点池的名称。
  • CLUSTER_NAME:集群的名称。
  • GOOGLE_CLOUD_LOCATION:管理集群的受支持的 Google Cloud 区域。例如 us-west1

如果节点池启用了超额配置更新,则此命令的输出会显示标记为 surge_settings 的部分。此 surge_settings 部分显示 max_surgemax_unavailable 参数的值。

管理正在进行的超额配置更新

您可以取消正在进行的超额配置更新,对失败的超额配置更新执行回滚,或恢复已中断的更新。

取消(暂停)和继续超额配置更新

在 GKE on AWS 中,“取消”超额配置更新实际上表示暂停更新。如需详细了解如何取消更新,请参阅取消更新操作

换句话说,取消超额配置更新不会回滚更新。相反,它可能会使节点池处于部分更新状态,并分为两个自动扩缩组:一个组的节点运行先前的配置,另一组的节点运行新配置。如需消除此问题,请使用与中断操作相同的目标参数再次运行 update 命令,以继续超额配置更新。在上一个更新结束前,使用其他节点池参数启动更新会受到限制。

对失败的超额配置更新执行回滚

如果超额配置更新被取消或失败,您可以将节点池回滚到原始状态。

回滚超额配置更新之前的注意事项

  • 您只能回滚处于部分更新状态(或 DEGRADED 状态)的已启用超额配置的节点池。
  • 对节点池启动回滚后,您便无法取消。
  • 在回滚操作成功完成之前,您无法执行更多更新操作。
  • 只有在回滚失败时才能重试回滚。
  • 节点池成功更新后,您无法回滚节点池。

如何对失败的超额配置更新执行回滚

如需回滚节点池的失败更新操作,请运行以下命令:

gcloud container aws node-pools rollback NODE_POOL_NAME
    --cluster CLUSTER_NAME

请替换以下内容:

  • NODE_POOL_NAME:要更新的节点池的名称。
  • CLUSTER_NAME:集群的名称。

回滚的工作原理

在内部启动回滚会对节点池启动新的更新操作。(此处的“内部”表示此过程在系统本身中执行,不需要您的干预)。该操作会尽最大努力将节点池节点还原为原始状态。

属于旧自动扩缩组的节点会被取消封锁,并且该组的集群自动扩缩器会启用,以允许将工作负载调度到节点上。系统会根据您在初始超额配置更新尝试中定义的超额配置设置,封锁、排空和终止新自动扩缩组中部分更新的节点池节点。

管理失败的超额配置更新

您可以通过以下三种方式处理失败的更新:

  1. 继续更新:您可以使用与失败的初始尝试相同的目标节点池设置来继续失败的更新。
  2. 回滚:使用回滚命令将节点池还原为原始状态。
  3. 修改并重启:如果要更改超额配置更新的参数,则必须删除现有节点池,然后使用新设置重新创建节点池。如需了解如何删除节点池,请参阅删除节点池