本页介绍了您和 Google Kubernetes Engine (GKE) 如何在集群生命周期内管理更改,以最大限度地提高性能和可用性,同时尽可能减少工作负载中断。
本页面适用于希望规划和优化集群环境以最大限度地减少工作负载中断的平台管理员。您可以在了解如何执行管理集群和集群管理概览中所述的基本集群管理任务之前或之后阅读本页内容。
托管式平台和共担责任
GKE 是由 Google 管理的 Kubernetes 开源容器编排平台。如GKE 的工作原理中所述,GKE 集群由控制平面(包括运行系统组件的管理节点)和工作器节点(用于部署工作负载)组成。
创建最佳集群环境以运行工作负载,并最大限度地提高性能和可用性并尽可能减少中断,是一项共同的责任:
- GKE 负责维护可靠、可用、安全且高性能的集群环境。为此,GKE 会管理控制平面、系统组件,以及在 Autopilot 模式下,还会管理工作器节点。
- 作为平台管理员,您负责配置集群和管理工作负载,包括为工作负载做好处理中断情况的准备。在标准模式下,您还可以创建和管理工作器节点,这些节点会分组到节点池中。
如需了解详情,请参阅 GKE 共担责任。
GKE 如何在集群生命周期内管理更改
作为 Kubernetes 的一种实现方式,GKE 集群是一个由进程和系统组成的网络,这些进程和系统协同工作,以维护运行工作负载的最佳环境。为了管理集群,GKE 会执行维护任务、进行更改、发起操作、更新组件,以及升级控制平面和节点的版本。
应用的日常运行大部分都在后台安静地进行,让您的工作负载能够不间断地运行。不过,某些关键更改必须以可能会暂时中断工作负载的方式完成,如下一部分所述。
某些集群更改可能会干扰工作负载
虽然 GKE 会努力确保您的工作负载能够顺畅运行,但某些基本类型的更改可能需要暂时中断工作负载,尤其是会重启运行工作负载的节点的更改。借助 GKE 和 Kubernetes 功能,您可以指定中断发生的时间和方式,以便在发生中断时,您的工作负载能够妥善处理更改。
以下部分介绍了 GKE 对集群进行哪些类型的更改、这些更改会导致哪些类型的中断,以及您可以如何做好准备。
使用 GKE 集群生命周期管理进行升级和更新
在 GKE 中,集群升级和集群更新具有相关含义。
在 GKE 中,集群升级(或简称升级)一词是指更新控制平面的 Kubernetes 版本(控制平面升级)或节点(节点升级),或同时更新这两者。使用 Standard 集群时,节点升级也可以称为节点池升级,因为 GKE 使用单个操作来升级节点池中的节点。
集群更新(或简称更新)是一个更笼统的术语,指任何类型的控制平面或节点更改,包括更新其版本。GKE 会执行升级、其他类型的更新和必要的维护操作,以便主动管理您的集群环境。这些操作可确保您的集群始终保持高性能、高安全性,并搭载最新的功能和 bug 修复。GKE 使用节点升级策略和维护政策等工具,最大限度地减少这些流程中的中断。
针对节点更新中断做好规划
某些类型的集群更改(主要是对节点的更改)可能会导致中断。
GKE 使用节点升级策略以针对工作负载需求进行优化的方式更新节点(包括 Autopilot 节点或 Standard 集群节点池)。这些策略适用于版本升级,也适用于某些其他类型的节点更改。这些策略可让 GKE 在执行节点更新时尽可能减少中断,这对于保持集群正常运行和性能至关重要。
使用维护窗口和排除项选择执行和不执行某些集群维护的时间,对于标准集群,选择最适合您的工作负载配置文件和资源限制的节点升级策略。
对于对节点的手动更改和自动发起的更改,GKE 都会进行具有以下一般特征的更改:
- 更改通常遵循维护政策:当 GKE 更改节点时,这些更改通常遵循 GKE 维护政策。如果您发起的手动更改需要重新创建节点池中的所有节点,请考虑以下事项:
- 更改通常使用节点升级策略:当 GKE 将大多数自动或手动发起的更改应用于节点(包括版本升级以外的节点更新)时,GKE 会选择节点升级策略:超额配置升级或蓝绿升级。Autopilot 始终使用超额配置升级。对标准集群节点池的更改通常使用超额配置升级,但在您配置了蓝绿升级并进行特定类型的更改时除外。
- 更改需要足够的资源:当 GKE 使用节点升级策略应用更改时,此更改需要一定数量的资源,具体取决于该策略及其配置。集群的项目必须具有足够的资源配额、资源可用性和预留容量(对于具有特定预留亲和性的节点池)。如需了解详情,请参阅确保用于节点升级的资源。
如需查看具体更改及其特性的详细列表,请参阅本页中的 GKE 集群的更改类型。
通过为破坏性变化做好准备,最大限度提高工作负载可用性
为了最大限度地提高在 GKE 集群上运行的工作负载的可用性,我们建议您执行以下部分中所述的操作:
选择集群可用性
如果控制平面可用性是优先事项,请选择 Autopilot 集群或区域级 Standard 集群,而不是可用区级 Standard 集群。如需了解详情,请参阅集群配置选项简介。
使用 GKE 工具控制升级
您可以使用以下工具来控制 GKE 升级集群的时间和方式,从而实现最佳实践:
- 发布渠道:选择发布渠道,以便获取可兼顾功能可用性和稳定性的集群版本。
- 维护窗口:指定可进行某些类型的 GKE 集群维护(例如升级)的重复性时间窗口。
- 维护排除项:防止在特定时间段内进行集群维护。
- 节点升级策略:如果使用标准集群,请选择节点的更新方式(超额配置升级或蓝绿升级),以最大限度地减少对工作负载的影响。
- 发布顺序:在 GKE 升级生产集群之前,先在测试环境中评估升级是否符合条件。
- 手动升级:手动升级集群,并执行取消、恢复、回滚和完成正在进行的自动或手动升级等操作。
管理和监控集群
为了管理集群的潜在中断问题,请持续执行以下任务:
- 使用 GKE 的可观测性套件监控集群。
- 请关注 GKE 版本说明,了解最新动态。
- 订阅集群通知,例如新推出的版本或安全公告。
- 请参阅 GKE 发布时间表,了解次要版本何时可供升级以及何时支持服务结束的最佳估算时间。
- 使用规范性指导,找出潜在的优化机会并说明如何优化集群使用,包括 GKE 弃用。
准备工作负载
通过尽可能提高工作负载的中断弹性来管理中断:
- 运行工作负载的副本,以确保冗余性并避免单点故障。
- 使用 Pod 中断预算为应用指定中断预算。
- 设置适当长度的终止宽限期,以便工作负载正常关闭。
- 如果您的工作负载使用的是 GPU 或 TPU,请按照说明管理 GPU 和 TPU 的 GKE 节点中断情况。
- 对于有状态应用(通常需要时间来完全停止 I/O 并从存储中卸载),请按照确保有状态工作负载能够应对中断中的步骤操作。
如需对这些主题进行一般性讨论,请参阅GKE 最佳实践:投产后运维以确保业务连续性博文的管理中断部分。
GKE 集群的更改类型
下表显示了集群最常见的主要更改类型,包括这些更改的特征,例如频率和中断级别。
升级类型
请查看下表,了解升级如何扰乱集群环境。
更改 | 自动或手动发起 | 遵循维护政策 | 频率 | 中断类型 | 中断级别 |
---|---|---|---|---|---|
控制平面升级 | 自动或手动 |
自动升级会遵循维护政策,直至支持结束,但在极少数情况下,系统会根据需要发布紧急修复程序。 手动升级不会受到维护政策的阻止。 |
补丁升级,每周一次,具体取决于发布渠道。 次要升级大约每四个月一次。 对于扩展渠道集群,仅在次要版本即将结束支持时进行次要升级。 |
控制平面 |
对于 Autopilot 集群和区域级 Standard 集群,控制平面将保持可用。 对于区域性 Standard 集群,您将无法与控制平面通信数分钟,这意味着您在此期间无法配置集群、节点和工作负载。 |
节点升级 | 自动或手动 |
自动升级会遵循维护政策,直至支持结束,但在极少数情况下,系统会根据需要发布紧急修复程序。 手动升级不会受到维护政策的阻止。 |
通常与控制平面升级相同。 如果您的集群未在发布渠道中注册,并且您停用了节点自动升级,则需要负责手动升级集群的节点池。 |
Autopilot 集群的所有节点,或一个或多个标准集群节点池。 |
节点必须关闭才能重新创建,Pod 必须替换。 GKE 会对 Autopilot 集群使用超额配置升级,或对标准集群使用配置的节点升级策略(超额配置或蓝绿)。 |
使用节点升级策略并遵循维护政策手动重新创建节点
请查看下表,了解这些手动更改如何破坏集群环境。此列表中还包括遵循 GKE 维护政策的手动更改等其他更改。
更改 | 自动或手动发起 | 遵循维护政策 | 频率 | 中断类型 | 中断级别 |
---|---|---|---|---|---|
轮替集群凭据 | 如果集群凭据将在 30 天内过期,则自动执行;也可以手动启动。 | 会遵循维护政策,但 GKE 可能会在凭据到期后的 30 天内替换维护政策。此外,如果您在第一步之后手动触发特定操作,则该操作不遵循维护政策。 | 每进行一次此类手动更改,或取决于集群凭据有效期(自动启动)。您可以手动为轮替流程中的特定步骤调用操作。 | 对于某些步骤,需要使用控制平面。对于其他步骤,Autopilot 集群的所有节点,每个标准集群节点池中的所有节点。 |
重新创建节点后,中断级别如下:
|
轮替控制层面的 IP 地址 | 手动发起 | 会遵循维护政策,但如果您在第一步之后手动触发特定操作,则该操作不遵循维护政策。 | 每进行一次此类手动更改,都会扣除一次。您可以手动为轮替流程中的特定步骤调用操作。 | 对于某些步骤,需要使用控制平面。对于其他步骤,Autopilot 集群的所有节点,每个标准集群节点池中的所有节点。 |
重新创建节点后,中断级别如下:
|
配置安全强化型节点 | 手动发起 |
重新创建控制平面不遵循维护政策,会立即进行更改。 重新创建节点时会遵循维护政策。 |
每项此类更改一次 |
控制平面已更新。 更新控制平面后,必须重新创建每个标准集群节点池中的所有节点。 |
重新创建控制平面时,中断级别如下所示:
重新创建节点后,中断级别如下所示:
|
配置网络政策 | 手动发起 | 是否遵循维护政策 | 每项此类更改一次 | Autopilot 集群的所有节点,每个标准集群节点池中的所有节点。 |
节点必须关闭才能重新创建,Pod 必须替换。 GKE 会使用超额配置升级来重新创建这些节点。 |
配置节点内可见性 | 手动发起 | 是否遵循维护政策 | 每项此类更改一次 | Autopilot 集群的所有节点,每个标准集群节点池中的所有节点。 |
节点必须关闭才能重新创建,Pod 必须替换。 GKE 会使用超额配置升级来重新创建这些节点。 |
配置 NodeLocal DNSCache | 手动发起 | 是否遵循维护政策 | 每项此类更改一次 | 要更新的 Standard 集群节点池中的所有节点都必须更新。 |
节点必须关闭才能重新创建,Pod 必须替换。 GKE 会使用超额配置升级来重新创建这些节点。 |
启用图片流式传输 | 手动发起 |
在集群级别进行更新时,会遵循维护政策。 更新单个节点池时,不遵循维护政策。 |
每项此类更改一次 |
如果在节点池一级切换,则为 Standard 集群节点池中的所有节点。 如果在集群级别切换此设置,则会影响您尚未为节点池单独启用或停用的任何 Standard 集群节点池的节点。 |
GKE 使用超额配置升级来重新创建节点池的节点。 |
不遵循维护政策的自动维护
请查看下表,了解不遵循维护政策的自动维护如何扰乱集群环境。
更改 | 自动或手动发起 | 遵循维护政策 | 频率 | 中断类型 | 中断级别 |
---|---|---|---|---|---|
控制平面修复或调整大小 | 自动 | 不遵循维护政策 |
控制平面修复频率是随机的,但对 Autopilot 集群和区域级 Standard 集群没有影响。 控制平面调整大小的频率不高,但随着集群伸缩事件的增加而增加,并且对 Autopilot 集群和区域级 Standard 集群没有影响。 |
控制平面 |
对于 Autopilot 集群和区域级 Standard 集群,控制平面将保持可用。 对于区域性 Standard 集群,您将无法与控制平面通信数分钟,这意味着您在此期间无法配置集群、节点和工作负载。 |
主机维护事件 | 自动 | 不遵循维护政策 | 如需了解大致频率,请参阅维护事件。 | 一个节点 |
对于大多数类型的节点,影响微乎其微。 某些节点(包括具有 GPU 或 TPU 的节点)可能会出现更严重的中断。如需了解详情,请参阅其他 Google Cloud 维护。 |
节点自动修复 | 自动 | 不遵循维护政策 | 节点自动修复频率是随机的。 |
一个节点 | 节点会重启,因此节点上运行的所有 Pod 都会中断。 |
回收 Spot 虚拟机和抢占式虚拟机 | 自动 | 不遵循维护政策 |
对于抢占式虚拟机,至少每 24 小时一次。 对于 Spot 虚拟机,当 Compute Engine 在其他位置需要资源时。 |
一个节点 | 详细了解终止和正常关闭 Spot 虚拟机以及终止和正常关闭抢占式虚拟机。 |
使用节点升级策略重新创建节点的手动更改,不遵循维护政策
请查看下表,了解这些手动更改如何破坏集群环境。此列表包含 GKE 使用超额配置升级的时机和 GKE 使用蓝绿升级的时机 中未包含的更改,因为这些更改不符合维护政策。
更改 | 自动或手动发起 | 遵循维护政策 | 频率 | 中断类型 | 中断级别 |
---|---|---|---|---|---|
节点池标签更新 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 | 当您更新现有节点池上的节点标签时,无论是否存在任何有效的维护政策,GKE 都会立即使用超额配置升级来重新创建节点池。 |
通过更改节点机器属性纵向伸缩节点 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 | 无论是否存在任何有效的维护政策,GKE 都会立即使用超额配置升级重新创建现有节点池中的节点。 |
映像类型更改 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 |
节点必须关闭才能重新创建,Pod 必须替换。 对于标准集群,GKE 会使用配置的节点升级策略(超额配置或蓝绿升级)。 |
在标准集群节点池中添加或替换存储池 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 |
节点必须关闭才能重新创建,Pod 必须替换。 对于标准集群,GKE 会使用配置的节点升级策略(超额配置或蓝绿)。 |
启用图片流式传输 | 手动发起 |
在集群级别进行更新时,会遵循维护政策。 更新单个节点池时,不遵循维护政策。 |
每项此类更改一次 |
如果在节点池一级切换,则为 Standard 集群节点池中的所有节点。 如果在集群级别切换此设置,则会影响您尚未为节点池单独启用或停用的任何 Standard 集群节点池的节点。 |
GKE 使用超额配置升级来重新创建节点池的节点。 |
网络性能配置更新 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 |
节点必须关闭才能重新创建,Pod 必须替换。 无论是否存在任何有效的维护政策,GKE 都会立即使用超额配置升级重新创建现有节点池中的节点。 |
启用 gVNIC | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 |
节点必须关闭才能重新创建,Pod 必须替换。 无论是否存在任何有效的维护政策,GKE 都会立即使用超额配置升级重新创建现有节点池中的节点。 |
节点系统配置变更 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 |
节点必须关闭才能重新创建,Pod 必须替换。 无论是否存在任何有效的维护政策,GKE 都会立即使用超额配置升级重新创建现有节点池中的节点。 |
机密节点 | 手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | Standard 集群节点池中的所有节点 |
节点必须关闭才能重新创建,Pod 必须替换。 无论是否存在任何有效的维护政策,GKE 都会立即使用超额配置升级重新创建现有节点池中的节点。 |
不需要重新创建节点的更改
请查看下表,了解对节点配置进行哪些更改不需要重新创建节点。这些更改不会造成中断,但如果更新后的节点配置影响了您的工作负载,仍有可能造成中断。
更改 | 自动或手动发起 | 遵循维护政策 | 频率 | 中断类型 | 中断级别 |
---|---|---|---|---|---|
更新以下设置:
|
手动发起 | 不遵循维护政策,立即进行更改。 | 每项此类更改一次 | 所有相关节点都会更新。 | 无需替换 Pod,因为节点配置会更新,而无需重新创建节点。 |