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

Kubernetes中kubernetes.io/ingress.class与ingressClassName区别咨询

Kubernetes Ingress中kubernetes.io/ingress.class与ingressClassName的区别

核心差异:新旧标准的迭代

  • kubernetes.io/ingress.class是旧版注解式标识:Kubernetes 1.18之前,Ingress没有原生字段指定控制器,只能通过这个注解给Ingress打“标签”,让对应控制器识别并处理。比如你配置的alb,就是告诉AWS ALB Ingress Controller“这个Ingress归我处理”。
  • ingressClassName是新版标准字段:从Kubernetes 1.18开始,Ingress API引入了这个原生字段,用来替代旧注解,是官方推荐的规范方式。它直接关联集群中定义的IngressClass资源,控制器通过监听这个字段来认领Ingress。

具体使用细节

关于kubernetes.io/ingress.class

  • 属于注解层级的配置,本质是给Ingress添加标识,没有强绑定的资源关联。
  • 对于AWS ALB Ingress Controller,早期版本仅支持通过该注解匹配,你需要保证注解值和控制器启动参数--ingress-class的取值一致(默认就是alb)。

关于ingressClassName

  • 是Ingress资源的原生字段,符合Kubernetes API规范,有明确的资源关联逻辑。
  • 它的取值必须对应集群中已存在的IngressClass资源的metadata.name。比如集群里有一个名为alb的IngressClass,这里填alb就能让AWS ALB控制器处理该Ingress。
  • 优先级说明:如果同时配置了注解和字段,新版本控制器会优先识别ingressClassName字段,旧注解会被忽略。

针对AWS ALB场景的实践建议

如果你的集群Kubernetes版本在1.18及以上,建议优先使用ingressClassName字段,操作步骤如下:

  1. 确认集群中存在对应IngressClass资源(AWS ALB Controller通常会自动创建,也可手动定义):
    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.aws/alb
    
  2. 调整Ingress配置,设置ingressClassName为alb,可移除旧注解(保留也不影响,控制器会优先用字段):
    ingress:
      enabled: true
      annotations: 
        # 可选:移除旧注解,或保留不生效
        # kubernetes.io/ingress.class: alb
        ...
        ...
      ingressClassName: "alb"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:25:25