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

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-class 为 test,则修改 –election-id 参数 ingress-controller-leader 改为 ingress-controller-leader-test:

6. 修改 nginx-ingress-controller 对应的 ValidatingWebhookConfiguration 资源,将 admissionReviewVersions 和 apiVersions 修改为 v1,path 修改为 /networking/v1/ingresses:

kubectl edit validatingwebhookconfiguration {ingress-class}-ingress-nginx-admission

7. 将 NginxIngress CR 资源中的镜像 tag 修改为 v1.1.3:

kubectl edit nginxingress {ingress-class}

赞 (0)
上一篇 4天前
下一篇 4天前