深入了解集群升级

本页面介绍了如何获取有关 Google Kubernetes Engine (GKE) 集群升级的信息。GKE 会随着时间的推移自动升级所有集群。当 GKE 升级集群时,GKE 会在单独的操作中更新 Kubernetes 控制平面和工作器节点的版本。

GKE 会汇总有关集群升级的信息,帮助您更好地了解集群的状态。您可以获取集群的以下信息:

  • 预定升级(预览版:GKE 会在自动集群控制平面升级自动集群节点升级前至少 72 小时通知您。启用预定升级后,GKE 仍会定期自动升级集群,但只有在提前通知的情况下才会进行升级。如果您未提前收到通知,则集群不会自动升级。
  • 自动升级目标:了解 GKE 以哪些新版本作为集群的目标,这些版本可能是补丁或新的次要版本,具体取决于集群的现有版本和限制条件。如果没有自动升级目标,则表示集群已是最新的升级目标,或者由于技术或业务原因,GKE 未分配自动升级目标。如需根据集群的次要版本检索常规自动升级目标,请参阅 GKE 版本说明中的版本更新,例如 2024-R33 说明
  • 自动升级状态:GKE 集群具有集群升级状态。您可以使用此状态详细了解当前升级,以及 GKE 在选择何时自动升级集群时考虑的限制条件,包括维护排除项或阻止升级的原因等因素。如需了解详情,请参阅集群自动升级状态
  • 升级历史记录:GKE 会提供集群最近的控制平面升级和节点升级的快照,包括自动升级和手动升级。对于最近的控制平面和节点升级,您可以查看以下详细信息:

    • 版本:初始版本和目标版本。
    • 状态:升级是否仍在运行,或者是否已成功、失败或取消。
    • 时间:开始时间和结束时间。
    • 启动类型:升级是自动触发还是手动触发。
  • 停止支持日期:GKE 最多支持次要版本 24 个月。如需了解详情,请参阅 GKE 次要版本生命周期。如需了解所有当前次要版本的支持终止日期,请参阅发布渠道的预计时间表

  • 集群事件:GKE 会针对某些事件(例如升级开始或完成时、新版本可用时、安全公告及停止支持日期)向 Cloud Logging 发送集群通知。除了 GKE 通过 Cloud Logging 自动显示这些事件之外,您还可以将这些通知路由到 Pub/Sub。如需了解详情,请参阅集群通知

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行 gcloud components update 命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

接收有关计划性集群升级的通知

您可以为 GKE 启用预定升级,以便提前收到以下类型的自动集群升级通知:

启用此选择启用功能后,GKE 会将集群通知发布到 Cloud Logging,或者(可选)发布到 Pub/Sub,告知您以下信息:

  • 集群名称。
  • 升级窗口的开始时间。控制平面的时间范围为 8 小时,节点的时间范围为 10 天。
  • 目标版本。
  • 受影响的节点池(对于节点升级):每封通知都针对一个自动升级目标,并列出最多 10 个已安排升级的节点池。 请注意,共享此自动升级目标的所有节点池都将升级,而不仅仅是列出的节点池。如需确认特定节点池是否受到影响,请获取节点池的升级信息,验证其自动升级目标是否与通知中的目标一致。

GKE 会在开始时间前 72 到 96 小时通知您。GKE 会在 8 小时(控制平面)或 10 天(节点)的开始时间窗口内开始控制平面升级或节点升级,以升级到以下版本之一:

  • 通知中指明的 GKE 版本
  • 如果某个补丁在升级之前成为集群发布渠道中的自动升级目标,则升级到同一次要版本中的后续补丁

通过预定升级通知,您可以确切了解 GKE 何时会开始升级控制平面或节点池。不过,此通知并不保证 GKE 会在提供的时间升级您的集群。此外,通知仅告知您升级何时开始,并不保证升级是否完成。

如果您启用此功能,并且集群中有很多节点,我们建议您还应配置并发节点池升级,以便节点升级能够尽快完成,同时又不会对集群环境造成不可接受的影响。

如果您不启用此功能,GKE 仍会自动升级集群控制平面。不过,如果不使用此功能,默认行为是您不会提前收到预定升级通知。

请查看以下部分,了解在收到预定升级通知时可以采取或不采取哪些操作,以及 GKE 可能不会在指定时间升级集群的其他原因。

收到预定升级通知后应采取的行动

如果您已准备好在通知中指定的时间进行预定升级,则无需采取任何进一步的操作,只需在 GKE 启动自动升级时监控集群环境和工作负载的运行状况即可。

或者,您也可以采取以下一些措施,这些措施会影响升级时间:

GKE 可能不会执行预定升级的原因

如果在发送通知和计划开始升级之间发现版本存在问题,GKE 可能不会在指定的时间窗口内执行预定升级。如需了解详情,请参阅找出阻止集群进行下一次升级的因素

对于节点升级,如果 GKE 发送的通知汇总了具有相同自动升级目标的所有节点池,则 GKE 可能无法在 10 天的时间窗口结束之前启动所有升级。对于具有多个节点池或升级时间较长的节点池(例如包含多个节点的大型节点池),这种情况更可能发生。对于这些节点升级可能需要较长时间才能完成的集群,我们建议您配置并发节点池升级,以便 GKE 可以在 10 天的时间范围内同时升级多个节点池。

如果 GKE 因您的操作、时间限制或其他不可预见的情况而取消或无法执行预定升级,则在重新安排升级时,GKE 会发送另一条集群通知。

限制

  • 您无法通过发布序列启用计划性升级。
  • GKE 不会针对已取消的预定升级发送通知。GKE 仅针对新的预定升级发送通知。
  • 如果您启用预定升级,则启用此功能可能会导致自动升级完成速度比未启用通知时慢。出现此效应的原因是,对于每次升级,GKE 都需要提前至少 72 小时通知您,遵守开始窗口,并遵守您为集群配置的任何维护窗口。如果您需要以最高效率在集群中进行升级,尤其是当您有大量节点池或大型节点池时,我们还建议您配置并发节点池升级。此外,您还可以使用手动升级在需要时推进升级。
  • 请勿为节点池数量超过 1,000 的集群启用预定升级。
  • GKE 仅针对版本升级(包括控制平面升级和节点升级)提供预先通知,而不针对其他类型的节点更新提供预先通知。如需详细了解升级(版本更新)与其他类型更新之间的区别,请参阅管理集群生命周期更改,以最大限度地减少中断
  • 您无法使用 Terraform 启用或停用预定升级。
  • 计划内升级通知仅保证在未事先通知的情况下,不会开始自动集群控制平面或节点升级。不过,通知并不保证以下几点:

    • 我们无法保证升级会在确切的时间开始,只能保证控制平面升级会在 8 小时的开始窗口内开始,节点升级会在 10 天的开始窗口内开始。
    • 但无法保证 GKE 会在该时间段内开始升级。如需了解详情,请参阅 GKE 可能无法执行预定升级的原因
    • 如果发布渠道中存在同一次要版本的后续补丁自动升级目标,则无法保证 GKE 会自动将控制平面或节点池升级到确切的补丁版本。

启用计划性升级

启用预定升级,将 CLUSTER_NAME 替换为集群名称:

gcloud beta container clusters update CLUSTER_NAME
   --enable-scheduled-upgrades

启用预定升级后,您可以使用 Cloud Logging 查看通知,也可以使用 Pub/Sub 配置通知。如需了解详情,请参阅集群通知

此外,如果您的集群中有很多节点,我们还建议您配置并发节点池升级,以便节点升级能够尽快完成,同时又不会对集群环境造成不可接受的影响。

收到预定升级通知后,请查看收到预定升级通知后该怎么做

停用计划性升级

停用预定升级,将 CLUSTER_NAME 替换为集群名称:

gcloud beta container clusters update CLUSTER_NAME
   --disable-scheduled-upgrades

停用此功能后,GKE 不会再就预定升级向您发送通知。

获取有关集群升级的信息

您可以使用Google Cloud 控制台或 gcloud CLI 主动获取有关集群升级的信息。

在项目级层获取有关升级的信息

如需获取项目中集群升级的聚合信息,您可以使用升级信息中心。

在 Google Cloud 控制台中,前往升级信息中心:

前往“升级”

此信息中心内包含的标签页会汇总有关升级的相关信息,例如:

  • 最近的控制平面和节点升级的状态
  • 升级的集群通知日志
  • 与升级相关的建议
  • 特定次要版本的停止支持时间表
  • 每个发布渠道中的集群数量

在集群级层获取升级信息

控制台

  1. 在 Google Cloud 控制台中,前往 Kubernetes 集群页面。

    转到 Kubernetes 集群

  2. 选择集群的名称以查看其集群详细信息页面。

  3. 集群详情页面上,查看集群升级部分。

gcloud

运行以下命令:

gcloud container clusters get-upgrade-info CLUSTER_NAME

CLUSTER_NAME 替换为您的集群的名称。

获取 Standard 集群节点池的升级信息

您可以了解 Standard 集群的各个节点池。本部分不适用于 Autopilot 集群,GKE 会管理节点,因此您不需要管理节点池。

控制台

  1. 在 Google Cloud 控制台中,前往 Kubernetes 集群页面。

    转到 Kubernetes 集群

  2. 点击集群名称以查看其详细信息。

  3. 点击节点标签页。

  4. 节点池部分中,点击要获取升级信息的节点池的名称。

  5. 节点池详细信息页面中,查看升级部分。

gcloud

运行以下命令:

gcloud container node-pools get-upgrade-info POOL_NAME
    --cluster=CLUSTER_NAME

POOL_NAME 替换为节点池的名称。

集群自动升级状态

以下是集群自动升级的潜在状态:

  • ACTIVE:活跃升级状态。
  • UNKNOWN:升级状态未知。
  • MINOR_UPGRADE_PAUSED:次要版本升级已暂停。
  • UPGRADE_PAUSED:所有自动升级都已暂停。

以下是 GKE 暂停集群自动升级的潜在原因:

  • MAINTENANCE_WINDOW:维护窗口导致集群升级无法完成。
  • MAINTENANCE_EXCLUSION_:如果暂停原因包含此前缀,则表示维护排除项正在阻止集群升级。后缀表示维护排除项的范围,例如 MAINTENANCE_EXCLUSION_NO_UPGRADES
  • CLUSTER_DISRUPTION_BUDGET:在某些操作(例如集群创建或升级)之后,集群需要一段冷却期来保护集群及其应用程序的稳定性和可用性。
  • CLUSTER_DISRUPTION_BUDGET_MINOR_UPGRADE:集群超出次要版本升级的集群中断预算。
  • SYSTEM_CONFIG:由于技术或业务原因,自动升级已暂停。在这种状态下,我们建议您仅在必要时执行手动升级。
  • AUTO_UPGRADE_PAUSED_REASON_UNSPECIFIED:原因不明。

查找有关集群升级常见场景的信息

查找有关管理集群升级时可能遇到的常见场景的信息。

了解集群的下一次升级时间

如需了解集群的下一次升级时间,以便您可以规划并合格地升级到新版本,请使用以下资源:

  • 发布时间表:在发布渠道的预计时间表中,找到与集群的次要版本和发布渠道对应的预计自动升级日期。
  • 在集群级层获取升级信息:查找集群的自动升级目标。
  • 集群通知:当渠道中推出新版本时,GKE 会发送通知。新版本发布后(具体时间取决于渠道),GKE 会将该版本指定为渠道中的自动升级目标。如需查看这些通知,请在 Cloud Logging 中查看集群通知时过滤 UpgradeAvailableEvent
  • 版本说明:请参阅版本说明,了解 GKE 何时将新的次要版本设置为渠道中的自动升级目标。

找出阻止集群进行下一次升级的因素

如需了解阻碍升级的原因以便解除阻碍,请查找集群的自动升级状态。如果自动升级处于暂停状态,请查看原因。请采用以下方法之一:

了解集群的升级何时完成

如需了解集群的控制平面和节点升级何时完成,以便验证工作负载是否按预期运行,请使用以下资源:

了解升级预计需要多长时间

如需了解升级预计需要多长时间,您可以在集群级获取升级信息,从而了解过去升级的时长。请参阅升级历史记录以了解最新示例。

升级时长取决于升级的是控制平面还是节点、升级策略、Pod 中断预算 (PDB)、有效维护政策和其他因素。

了解集群的次要版本何时达到支持终止期限

GKE 会自动升级仍在运行已过停止支持日期的次要版本的集群。如需了解详情,请参阅在停止支持时自动升级

如需了解集群的次要版本何时达到停止支持日期(例如,设置维护排除项或了解已弃用的 API 何时无法再使用),请使用以下资源:

后续步骤