GKE v1.23生命周期结束后自动升级未到v1.24仍留v1.23,该如何处理?
GKE v1.23升级后版本未更新至v1.24的问题分析与处理
可能原因
- GKE自动升级分为控制平面升级和节点池升级两个独立流程,你看到的节点升级大概率是将节点更新到了v1.23版本的最新补丁,而非跨版本升级到v1.24。
- 生命周期截止日当天移除排除规则后,GKE的自动升级队列会优先处理补丁版本补全,确保集群处于当前大版本的安全状态,而非立即触发跨版本升级。
- 跨版本升级需要满足前置条件(如工作负载兼容目标版本、节点池配置允许跨版本升级),若存在未满足的条件,升级计划会被隐藏或延迟。
处理步骤
确认当前集群版本细节
执行命令查看控制平面和节点池的具体版本:gcloud container clusters describe [CLUSTER_NAME] --zone [ZONE]重点关注
currentMasterVersion(控制平面版本)和currentNodeVersion(节点版本),确认节点是否仅升级了v1.23的补丁包。检查目标版本可用性
查看当前区域支持的GKE版本列表,确认v1.24是否可升级:gcloud container get-server-config --zone [ZONE]查看
validMasterVersions和validNodeVersions字段,确认v1.24在可用范围内。手动触发跨版本升级(若自动升级未触发)
- 先升级控制平面:
替换gcloud container clusters upgrade [CLUSTER_NAME] --zone [ZONE] --master --cluster-version=1.24.x1.24.x为实际可用的v1.24具体版本(如1.24.17-gke.1000)。 - 再升级节点池:
gcloud container clusters upgrade [CLUSTER_NAME] --zone [ZONE] --node-pool [NODE_POOL_NAME] --cluster-version=1.24.x
- 先升级控制平面:
排查兼容性问题
检查工作负载是否兼容Kubernetes v1.24:- 移除对已废弃API的依赖(如v1.24彻底移除PodSecurityPolicy、
extensions/v1beta1和apps/v1beta1下的资源) - 确认所有Pod的镜像能在v1.24环境中正常启动
- 移除对已废弃API的依赖(如v1.24彻底移除PodSecurityPolicy、
查看升级操作日志
排查是否有升级失败或被阻塞的情况:gcloud container operations list --filter="operationType:(UPGRADE_MASTER OR UPGRADE_NODE_POOL)" --zone [ZONE]
预期结果
- 若为自动升级队列延迟,通常1-2个工作日内GKE会自动触发控制平面到v1.24的升级,后续节点池会自动跟进完成升级。
- 手动触发升级的话,控制平面升级一般耗时10-30分钟,节点池升级会按逐个节点替换的方式进行,耗时取决于节点数量和工作负载的PodDisruptionBudget配置。
- 升级完成后,集群版本会显示为v1.24,生命周期截止相关通知也会消失。
内容的提问来源于stack exchange,提问作者Amir Kusedghi
相关产品推荐
相关产品推荐

