问题现象
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}
