5.4. 集群更新的最佳实践
OpenShift Container Platform 提供了可靠的更新体验,可最大程度降低更新期间的工作负载中断。除非集群在更新请求时处于可升级状态,否则更新将不会启动。
这个设计在启动更新前强制实施一些关键条件,您也可以采取其他多个措施来提高成功集群更新的机会。
5.4.1. 选择 OpenShift Update Service 推荐的版本
OpenShift Update Service (OSUS) 根据集群特征(如集群订阅频道)提供更新建议。Cluster Version Operator 会将这些推荐保存为推荐的或有条件的更新。虽然可以尝试更新到 OSUS 不推荐的版本,但按照推荐的更新路径进行防止在集群中出现已知的问题或意外后果。
仅选择 OSUS 建议的更新目标以确保成功更新。
5.4.2. 解决集群中的所有关键警报
关键警报必须尽快解决,但在启动集群更新前,务必要解决这些警报并解决所有问题。在开始更新前无法解决关键警报可能会导致集群出现有问题的条件。
在 web 控制台的 Administrator 视角中,进入到 Observe
5.4.3. 确保集群处于 Upgradable 状态
当一个或多个 Operator 在一个小时内没有报告其 Upgradeable
条件为 True
时,在集群中会触发 ClusterNotUpgradeable
警告警报。在大多数情况下,此警报并不会阻止补丁更新,但您无法执行次版本更新,直到您解决了这个警报,所有 Operator 都报告 Upgradeable
为 True
。
如需有关 Upgradeable
条件的更多信息,请参阅额外资源部分中的 "了解集群 Operator 条件类型"。
5.4.4. 确保有足够的备用节点可用
集群不应在没有备用节点容量的情况下运行,特别是在启动集群更新时。没有运行且可用的节点可能会限制集群在对集群工作负载造成最小影响的情况下执行更新的能力。
根据集群的 maxUnavailable
spec 配置的值,如果是一个不可用节点,集群可能无法对该节点应用机器配置更改。另外,如果计算节点没有足够的备用容量,当第一个节点进行更新时,工作负载可能无法临时转移到另一个节点上。
确保每个 worker 池中有足够的可用节点,以及计算节点上有足够的备用容量,以提高节点更新成功的机会。
对于 OpenShift Container Platform 中的所有机器配置池,maxUnavailable
的默认设置是 1
。建议您不要更改这个值,且一次只更新一个 control plane 节点。对于 control plane 池,请不要将这个值改为 3
。
5.4.5. 确保正确配置了集群的 PodDisruptionBudget
您可以使用 PodDisruptionBudget
对象定义任意给定时间必须可用的 pod 副本的最小数量或百分比。此配置可防止工作负载在集群进行维护操作(例如进行集群更新)时出现中断。
但是,可以为给定的拓扑配置 PodDisruptionBudget
,以防止节点在集群更新过程中排空和更新。
在规划集群更新时,检查 PodDisruptionBudget
对象的配置以了解以下因素:
-
对于高可用性工作负载,请确保有可以临时离线的副本,而不会被
PodDisruptionBudget
禁止。 -
对于不是高用的工作负载,请确保它们不受
PodDisruptionBudget
保护,或者有一些替代机制来排空这些工作负载,如定期重启或有保证的最终终止。
其他资源