kubernetes ingress-nginx:名称为 nginx 的 IngressClass 对于 ingress-nginx 无效

Fre*_*ens 6 kubernetes kubernetes-ingress nginx-ingress

当我的 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
Run Code Online (Sandbox Code Playgroud)

一切正常,新创建的入口会自动分配“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)
Run Code Online (Sandbox Code Playgroud)

Fre*_*ens 9

出现此错误的原因是 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 我知道事后看来这似乎非常明显,因为解决方案实际上就在错误日志中,但是能够通过谷歌搜索这个错误可以节省我一些时间。