GCP Kubernetes v1.22集群ingress-nginx控制器因API弃用CrashLoopBackOff
解决方案
1. 升级Nginx Ingress Controller版本
你当前使用的nginx-ingress-controller/v0.35.0版本不支持Kubernetes 1.22中已移除的networking.k8s.io/v1beta1 Ingress相关API,必须升级到适配K8s 1.22的版本:
- 最低要求升级到v1.0.0及以上(该版本开始全面支持
networking.k8s.io/v1API) - 建议直接升级到官方维护的稳定版(比如v1.8.0+,适配最新K8s版本)
升级操作:
- 若通过Helm部署,执行:
helm repo update helm upgrade ingress-nginx ingress-nginx/ingress-nginx --version <目标版本号> -n <你的命名空间> - 若通过YAML部署,下载对应版本的官方部署清单,替换现有资源后执行:
kubectl apply -f <清单文件路径>
2. 确认所有Ingress资源已迁移至networking.k8s.io/v1
检查集群中所有Ingress资源,确保:
- API版本为
networking.k8s.io/v1 - 字段符合v1规范:
spec.rules.http.paths必须添加pathType(可选值:Prefix、Exact、ImplementationSpecific)backend字段替换为service.name和service.port.number/service.port.name,不再使用旧的serviceName和servicePort
示例正确的v1 Ingress配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress spec: ingressClassName: nginx rules: - http: paths: - path: /example pathType: Prefix backend: service: name: example-service port: number: 80
3. 迁移IngressClass资源至networking.k8s.io/v1
如果集群中存在IngressClass资源,同样需要将其API版本从networking.k8s.io/v1beta1升级为networking.k8s.io/v1:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: nginx spec: controller: k8s.io/ingress-nginx
应用修改后的资源:
kubectl apply -f <ingressclass配置文件路径>
4. 验证修复效果
- 检查Ingress Controller Pod状态:
确保所有Pod处于kubectl get pods -n <控制器命名空间>Running状态,无报错日志 - 查看控制器日志,确认不再出现
Failed to list *v1beta1.Ingress类错误 - 从浏览器访问之前无法打开的部署,确认访问恢复正常
内容的提问来源于stack exchange,提问作者Jae
相关产品推荐
相关产品推荐

