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