一、问题原因
由于 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}