首页 > 解决方案 > kubernetes ingress-nginx:名称为 nginx 的 IngressClass 对 ingress-nginx 无效

问题描述

当我的 ingress-nginx 控制器已经运行时,我创建了以下 ingressClass:

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: nginx
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: example.com/ingress-nginx-controller

一切正常,新创建的入口会自动分配给“nginx”入口类,我的入口 nginx 控制器会按预期处理它们。

但是,在重新启动 ingress-nginx-controller pod 后,我在其日志中收到以下错误并保留:

I1206 05:23:22.968400       8 main.go:115] "Enabling new Ingress features available since Kubernetes v1.18"
E1206 05:23:22.971801       8 main.go:134] Invalid IngressClass (Spec.Controller) value "quivr.be/ingress-nginx-controller". Should be "k8s.io/ingress-nginx"
F1206 05:23:22.971832       8 main.go:135] IngressClass with name nginx is not valid for ingress-nginx (invalid Spec.Controller)

标签: kuberneteskubernetes-ingressnginx-ingress

解决方案


出现此错误是因为 IngressClass 资源的 spec.controller 字段不能只包含任何域名。域名和控制器名称特定于您部署的入口控制器。

对于 ingress-nginx 控制器,这需要是错误日志中指示的k8s.io/ingress-nginx 。

对于其他控制器,如 nginx ingress(与 ingress-nginx 不同),这应该是 nginx.org/ingress-controller,如下所示:https ://github.com/nginxinc/kubernetes-ingress/blob/master/deployments/common /ingress-class.yaml

ps 我知道这在事后看来确实很明显,因为解决方案实际上在错误日志中,但是能够用谷歌搜索这个错误会节省我一些非常疲惫的时间。


推荐阅读