You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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/v1 API)
  • 建议直接升级到官方维护的稳定版(比如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状态:
    kubectl get pods -n <控制器命名空间>
    
    确保所有Pod处于Running状态,无报错日志
  • 查看控制器日志,确认不再出现Failed to list *v1beta1.Ingress类错误
  • 从浏览器访问之前无法打开的部署,确认访问恢复正常

内容的提问来源于stack exchange,提问作者Jae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:12:38