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

GKE中使用ingress-nginx内部控制器遇IngressClass验证错误求助

排查IngressClass "nginx-internal" 找不到的问题

1. 确认IngressClass资源是否存在

首先检查集群中是否存在名为nginx-internal的IngressClass对象:

kubectl get ingressclass

如果输出中没有nginx-internal,说明部署内部控制器时未创建对应的IngressClass资源,需要调整部署配置。

2. 修正内部控制器的Helm部署参数

部署内部ingress-nginx控制器时,必须显式配置IngressClass相关参数,确保创建nginx-internal类:

关键配置项(Helm values):

controller:
  # 启用并指定IngressClass名称
  ingressClass:
    enabled: true
    name: nginx-internal
  # GCP内部LB专属注解,确保创建内部负载均衡器
  service:
    annotations:
      cloud.google.com/load-balancer-type: "Internal"
  # 可选:指定控制器仅监听该IngressClass(避免干扰外部控制器)
  watchIngressClass: "nginx-internal"

重新部署内部控制器:

helm upgrade --install ingress-nginx-test-internal ingress-nginx/ingress-nginx \
  --namespace <你的命名空间> \
  -f internal-values.yaml

3. 验证Ingress资源的IngressClass配置

确保你的Ingress资源使用正确的字段指定IngressClass,避免使用旧版annotation:

正确的Ingress配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-internal-ingress
  namespace: <你的命名空间>
spec:
  ingressClassName: nginx-internal # 这里必须匹配IngressClass的name
  rules:
  - host: internal.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              number: 80

4. 检查内部控制器日志

查看内部控制器的日志,确认是否成功加载nginx-internal IngressClass:

kubectl logs -n <你的命名空间> -l app.kubernetes.io/component=controller -l app.kubernetes.io/instance=ingress-nginx-test-internal | grep -i "ingressclass"

如果日志中出现类似Successfully loaded IngressClass nginx-internal的信息,说明控制器已识别该类;若没有,检查控制器的启动参数是否包含--watch-ingress-class=nginx-internal。


内容的提问来源于stack exchange,提问作者Fernando Barrera Melchor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:40:34