为什么我看到 Cannot complete cluster master upgrade 消息?

排查在更新或升级集群主节点时出现的错误。

虚拟私有云 经典基础设施 Satellite

升级集群主节点时,您会收到类似于以下示例的 Cannot complete cluster master upgrade 错误消息。

Cannot complete cluster master upgrade because the Upgradeable status condition is set to False.

集群版本操作程序报告返回 Upgradeable 状态 False 的原因有多种。 例如,如果您正在从 Red Hat OpenShift 4.15 升级到 4.16,并收到此错误消息,则您的集群管理员很可能尚未确认他们已评估并移除了相应 Kubernetes 版本中的已弃用 API。 如需了解更多信息,请参阅 《准备升级到 OpenShift Container Platform 》 4.16

运行以下命令以检查集群不处于可升级状态的原因。

oc get clusterversion version -o json | jq '.status.conditions[] | select(.type == "Upgradeable")'
  1. 查看要更新到的版本的 版本信息和更新操作。 评估集群中已在新版本中移除的 API。

  2. 查看 JSON 对象中的 reasonmessage 字段以了解 False 可升级状态。 如果您正在尝试从 Red Hat OpenShift 4.15 升级到 Red Hat OpenShift 4.16 且没有管理员确认,则消息中会包含 * Kubernetes 1.29 and therefore OpenShift 4.16 remove several APIs which require admin consideration. Please see https://access.redhat.com/articles/6958395 for details and instructions.. 如果您无权访问 Red Hat 帐户以查看解决方案,那么可以作为集群管理员执行以下步骤来解决问题。

  3. 迁移任何受影响的组件以使用相应的新 API 版本,包括工具,工作负载或与集群运行或交互的任何其他组件。 例如,Red Hat OpenShift 4.16 群集使用 Kubernetes 1.29 并面临相同的 eprecations

  4. 在成功迁移掉已删除的 API 后,您就可以确认您的群集已准备好升级到 Red Hat OpenShift 的下一个版本。

    集群管理员负责确保不再使用已除去的 API,并在提供此管理员应答之前完成迁移到受支持的 API。 IBM Cloud 可以协助进行评估,但无法识别所有可能使用已移除 API 的情况,特别是在外部工具和空闲工作负载中。

  5. 执行以下步骤以 提供管理员确认,即您已从已移除的 API 迁移。

  6. 完成先前的迁移步骤后,请再次运行以下命令。 请注意,更新 Upgradeable 状态可能需要几分钟时间。 如果未返回任何数据,那么已除去 Upgradeable 状态,您可以重试集群升级。

    oc get clusterversion version -o json | jq '.status.conditions[] | select(.type == "Upgradeable")'