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

Kubernetes 1.22使用ingressClassName配置ingress-nginx返回404如何解决

问题根因

Kubernetes 1.18+版本引入ingressClassName字段后,需要集群中存在对应的IngressClass资源,ingress-nginx控制器才会匹配处理绑定该类的Ingress规则。你当前Kubespray部署的ingress-nginx只配置了控制器的class名称,没有自动创建对应的IngressClass资源,导致控制器识别不到指定ingressClassName: nginx的Ingress,所以不会为其分配地址、转发流量,返回404。

解决步骤

步骤1:确认IngressClass缺失

执行以下命令验证集群中是否存在对应的IngressClass:

kubectl get ingressclasses.networking.k8s.io

如果输出中没有名为nginx的资源,即可确认是该问题。

步骤2:创建IngressClass资源

两种方式可选:

方式1:手动创建

新建ingress-class.yaml文件,内容如下:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
  # 可选:如果要设为集群默认IngressClass,添加以下注解
  # annotations:
  #   ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: k8s.io/ingress-nginx

执行创建:

kubectl apply -f ingress-class.yaml

方式2:修改Kubespray配置自动创建

在你的inventory/mycluster/group_vars/k8s_cluster/addons.yml中添加以下配置:

ingress_nginx_ingress_class_enabled: true

重新运行Kubespray的addons部署阶段即可自动生成IngressClass资源。

步骤3:验证生效

创建完成后等待1~2分钟,重新查看Ingress状态:

kubectl get ing grafana

此时ADDRESS字段会正常分配控制器地址,访问grafana.mycluster.org即可正常转发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:02