文档中心>容器服务>故障处理>NginxIngress 版本过低导致集群无法升级到 1.22 以上

NginxIngress 版本过低导致集群无法升级到 1.22 以上

最近更新时间:2025-05-09 14:39:02

我的收藏

问题现象

nginx-ingress-controller 镜像版本过低会导致集群无法正常升级到 Kubernetes 1.22版本及以上,相关报错如下图所示:


问题原因

由于 Kubernetes 1.22版本 APIServer 已经废弃 extensions/v1beta1 版本的 Ingress 资源,集群升级到1.22后,之前安装的 nginx-ingress-controller 组件镜像版本如果低于 v1.1.3,会导致 nginx-ingress-controller 组件无法正常工作。

解决方案

请按照以下步骤将低版本的 nginx-ingress-controller 组件升级到 v1.1.3 版本:
1. 登录 容器服务控制台,在左侧导航栏中选择集群
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧菜单栏中的组件管理,在组件管理页面将 ingress-nginx 插件升级到最新版本(若已是可以忽略):

4. 编辑对应 nginx ingress controller 的 workload,修改对应 nginx ingress controller 的镜像 tag 为 v1.1.3:

5. 编辑对应 nginx ingress controller 的 workload,修改 --election-id 参数,添加 ingress-class 后缀,例如 --ingress-classtest,则修改 --election-id 参数 ingress-controller-leader 改为 ingress-controller-leader-test

6. 修改 nginx-ingress-controller 对应的 ValidatingWebhookConfiguration 资源,将 admissionReviewVersionsapiVersions 修改为 v1path 修改为 /networking/v1/ingresses
kubectl edit validatingwebhookconfiguration {ingress-class}-ingress-nginx-admission

7. 将 NginxIngress CR 资源中的镜像 tag 修改为 v1.1.3:
kubectl edit nginxingress {ingress-class}