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

EKS v1.22部署Ingress触发backend字段校验错误

问题原因

该校验错误是Ingress API版本不兼容导致的:

  • Kubernetes从v1.22版本开始(包括EKS v1.22)正式移除networking.k8s.io/v1beta1版本Ingress API的支持,仅接受networking.k8s.io/v1版本的规范结构
  • 你提交的清单虽然声明了apiVersion: networking.k8s.io/v1,但backend块使用的是旧v1beta1版本的字段:直接写serviceName、servicePort,v1版本中这两个字段已经被废弃,必须嵌套在service对象下声明,API服务器校验字段结构不匹配就会抛出你看到的backend字段校验错误。

除此之外你的配置还存在3个会导致部署/运行失败的问题:

  • alb.ingress.kubernetes.io/listen-ports注解中的JSON格式错误,YAML中用双引号包裹JSON字符串时,内部双引号没有正确转义,会导致ALB Ingress控制器无法解析监听端口配置
  • v1版本Ingress强制要求每个path配置pathType字段,缺失该字段同样会触发校验错误
  • 旧版kubernetes.io/ingress.class注解已经被废弃,新版推荐使用spec.ingressClassName字段声明Ingress类型,避免后续版本兼容问题
修复方案

将Ingress配置调整为符合v1 API规范的结构,修正后的完整可用配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-alb
  namespace: deploy
  annotations:
    alb.ingress.kubernetes.io/certificate-arn: "arn:aws:acm:us-west-1:0987654322:certificate/ee21bffb-ba4a-45a6-95a6-00551c1cfa32"
    alb.ingress.kubernetes.io/healthcheck-interval-seconds: "15"
    alb.ingress.kubernetes.io/healthcheck-port: traffic-port
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
    alb.ingress.kubernetes.io/healthy-threshold-count: "2"
    # 修正JSON包裹方式,用单引号包裹避免转义问题
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS-1-1-2017-01
    alb.ingress.kubernetes.io/ssl-redirect: "443"
    alb.ingress.kubernetes.io/success-codes: "200"
    alb.ingress.kubernetes.io/target-group-attributes: "stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60"
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/unhealthy-threshold-count: "2"
spec:
  # 替换旧的ingress.class注解,使用v1版本标准字段声明
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /*
        # 新增必填的pathType字段,ALB场景使用ImplementationSpecific匹配原有规则
        pathType: ImplementationSpecific
        backend:
          # 替换旧的serviceName/servicePort结构,使用v1要求的嵌套service配置
          service:
            name: service-svc
            port:
              number: 80
校验方式

修改完成后可以先执行客户端干跑命令验证配置合法性,无报错再正式部署:
kubectl apply -f <你的ingress配置文件名>.yaml --dry-run=client


内容的提问来源于stack exchange,提问作者Sridharan r.g

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:48:36