1. OpenShift版本体系与升级治理全景

在OpenShift容器平台(OCP)的运维与治理工作中,版本管理不是简单的“打补丁”,而是一套贯穿集群全生命周期的治理体系。理解这套体系,需要先回答三个问题:OCP的版本号到底表达了什么?它与上游Kubernetes是什么关系?一个集群从安装到退役,会经历哪些生命周期阶段、又该沿哪条通道升级?本节围绕这三个问题建立整体认知框架。

一、OCP版本号语义:三段数字各有含义

OCP采用语义化版本形式,写作 X.Y.Z,例如 4.14.12。三段数字并非等权:

  • X(主版本):代表平台代际。OCP 3.x 与 4.x 在架构上差异巨大(4.x 引入RHCOS、Cluster Version Operator、机器配置池等),主版本之间不支持原地升级,必须重建集群。
  • Y(次版本,Minor):代表功能特性版本,如 4.12、4.13、4.14。次版本升级是运维中最常见的动作,通常每约16周发布一个新次版本,每个次版本有独立的支持周期。
  • Z(补丁版本,Patch):代表同一功能版本内的缺陷修复与安全补丁,如 4.14.5 → 4.14.12。补丁升级风险最低,是日常维护的主要形式。

需要特别区分两个概念:版本号与发布镜像(Release Image)。OCP 4.x 的每一次发布都对应一个不可变的 release image,例如 quay.io/openshift-release-dev/ocp-release:4.14.12-x86_64。集群升级的本质,就是把控制面与节点的目标版本切换到另一个 release image,由 Cluster Version Operator(CVO)驱动完成。因此“升级到 4.14.12”在技术上等价于“让集群收敛到该 release image 所声明的期望状态”。

二、OCP与Kubernetes的版本对应关系

OCP 是 Kubernetes 的企业级发行版,每个 OCP 次版本都绑定一个特定的 Kubernetes 次版本。例如 OCP 4.12 对应 Kubernetes 1.25,4.13 对应 1.26,4.14 对应 1.27。这种绑定意味着:你不能单独升级 OCP 中的 Kubernetes 组件,Kubernetes 版本随 OCP 版本一起演进。

这对使用原生 Kubernetes API 或依赖特定 API 版本的应用有直接影响。Kubernetes 每个次版本都会弃用(deprecate)并最终移除(remove)部分 API,例如 extensions/v1beta1 的 Ingress 在 1.22 被移除。因此升级 OCP 前,必须检查工作负载是否使用了即将被移除的 API。OCP 提供了 oc adm upgrade 与升级前的 API 检查能力,也可借助 kubectl convert、oc get --raw /metrics 中的 API 使用指标来评估影响。

三、升级通道:稳定、快速与候选

OCP 通过升级通道(Update Channel)控制集群能看到哪些目标版本。常见通道有三类:

  • stable-X.Y:稳定通道,只推荐经过充分验证的补丁版本,适合生产环境。
  • fast-X.Y:快速通道,更早获得新补丁,适合愿意承担一定风险的团队。
  • candidate-X.Y:候选通道,包含尚未正式发布的版本,仅用于测试。

通道决定了“可见版本集合”,而升级路径(Upgrade Path)决定了“允许的跳转”。OCP 不支持跨次版本跳跃,例如不能从 4.12 直接升到 4.14,必须 4.12 → 4.13 → 4.14 逐级进行。补丁版本之间通常可以跨多个 Z 版本,但也要遵循官方推荐的路径图(Upgrade Graph)。

生产环境建议固定使用 stable-X.Y 通道,并在升级前用 oc adm upgrade --include-not-recommended 查看是否存在被标记为“不推荐”的版本,避免踩到已知问题版本。

四、生命周期阶段:从安装到退役

每个 OCP 次版本都遵循明确的生命周期:发布 → 全面支持(General Availability)→ 维护支持(Maintenance)→ 延长更新支持(EUS,仅部分版本)→ 生命周期结束(EOL)。以 4.14 为例,其全面支持期约6个月,之后进入维护支持,仅接收关键缺陷与安全修复;到达 EOL 后不再发布任何补丁,集群将暴露在未修复漏洞中。

因此版本治理的核心节奏是:在次版本进入维护支持前完成升级规划,在 EOL 前完成升级落地。对于希望减少升级频率的用户,可选择 EUS 版本(如 4.12、4.14、4.16),EUS 版本支持从上一个 EUS 直接升级,从而把“每16周升一次”拉长为“每约一年升一次”。

五、版本治理全景图

下图把版本号语义、Kubernetes 对应、升级通道与生命周期阶段整合到一条时间轴上,帮助建立整体认知:

OCP 版本治理全景:版本语义 · K8s 对应 · 升级通道 · 生命周期 版本号语义 X.Y.Z 4 . 14 . 12 X 主版本:代际,不可原地升级 Y 次版本:功能特性,约16周一个 Z 补丁:缺陷与安全修复 OCP ↔ Kubernetes 绑定 OCP 4.12 → K8s 1.25 OCP 4.13 → K8s 1.26 OCP 4.14 → K8s 1.27 K8s 版本随 OCP 一起演进 升级通道 stable-X.Y(生产推荐) fast-X.Y(较早补丁) candidate-X.Y(测试) 次版本生命周期阶段(以 4.14 为例) 发布 GA 全面支持 约6个月 维护支持 仅关键修复 EUS 延长支持 仅部分版本 EOL 停止补丁 升级路径规则 次版本不可跳跃:4.12 → 4.13 → 4.14 逐级升级 EUS 版本可跨级:4.12(EUS) → 4.14(EUS),减少升级频次 升级前检查 API 弃用与版本推荐

六、治理动作:从认知到落地

建立全景认知后,日常治理可归纳为四个持续动作:

  1. 盘点现状:用 oc get clusterversion 查看当前版本与通道,用 oc adm upgrade 查看可用目标版本。
  2. 评估影响:对照目标 OCP 版本对应的 Kubernetes 版本,检查工作负载是否使用将被移除的 API;核对 Operator 与 CSI 驱动的兼容矩阵。
  3. 规划路径:确认当前版本到目标版本是否满足逐级或 EUS 跨级规则,避开被标记为不推荐的版本。
  4. 执行与验证:升级后检查 CVO 状态、集群 Operator 健康度、节点就绪状态与关键业务 Pod 的可用性。
切勿在生产集群上直接切换到 candidate 通道或使用 --force 跳过推荐路径。跨次版本跳跃或使用未验证版本,可能导致控制面组件无法收敛,甚至需要重建集群。