Nginx Ingress控制器 - 获取IngressClass nginx时出错。

5

我在裸机CentOS上设置了一个Kubernetes集群v1.22.1。我在按照此链接中的操作步骤1-3安装Nginx Ingress控制器时遇到问题。

我按照步骤进行操作,但是nginx ingress控制器pod出现了CrashLoopBackOff错误。我查看了pod的日志并发现如下信息:

[root@dev1 deployments]# kubectl logs -n nginx-ingress nginx-ingress-5cd5c7549d-hw6l7
I0910 23:15:20.729196       1 main.go:271] Starting NGINX Ingress controller Version=1.12.1 GitCommit=6f72db6030daa9afd567fd7faf9d5fffac9c7c8f Date=2021-09-08T13:39:53Z PlusFlag=false
W0910 23:15:20.770569       1 main.go:310] The '-use-ingress-class-only' flag will be deprecated and has no effect on versions of kubernetes >= 1.18.0. Processing ONLY resources that have the 'ingressClassName' field in Ingress equal to the class.
F0910 23:15:20.774788       1 main.go:314] Error when getting IngressClass nginx: the server could not find the requested resource

我相信我已经按照下面的方式正确设置了IngressClass:

[root@dev1 deployments]# kubectl get IngressClass
NAME    CONTROLLER                     PARAMETERS   AGE
nginx   nginx.org/ingress-controller   <none>       2m12s

所以我不知道为什么在获取IngressClass nginx时出现错误。请问有人能帮我理一理吗?
1个回答

2

复制和发生的事情

我在CentOS 7上使用kubeadm创建了一个单节点集群,并得到了相同的错误。

只有因为我们在开始时错过了这个命令,你和我才能进一步进行:

git checkout v1.12.1

主要区别是 ingress-class.yamlv1.12.1 版本中使用的是 networking.k8s.io/v1beta1,而在 master 分支中使用的是 networking.k8s.io/v1
我第二次来到这里并切换分支后,立即看到了这个错误。
$ kubectl apply -f common/ingress-class.yaml
error: unable to recognize "common/ingress-class.yaml": no matches for kind "IngressClass" in version "networking.k8s.io/v1beta1"

这似乎是其他资源还未更新以在Kubernetes v1.22+上使用的情况。 请查看弃用的迁移指南-v1.22-ingress
如何继续进行:
  • 我在一个具有v1.21.4的集群上测试了完全相同的方法,它非常有效。 因此,您可以考虑降级集群。

  • 如果您不一定要使用由Nginx Inc支持的NGINX Ingress Controller,则可以尝试由Kubernetes社区开发的ingress nginx。 我在v1.22上测试过,它可以正常工作。 请找到裸机集群上的安装

附言:可能有些混淆,但是有两个由不同团队开发的免费nginx ingress控制器。此外还有第三个选项——NGINX Plus,它是付费的,并且具有更多的选项。请在这里查看区别

2
嗨@moonkotte,谢谢!这使我想起了刚开始设置入口类时出现的错误,原因是由于networking.k8s.io/v1beta1。所以我手动更改了apiversion为networking.k8s.io/v1。让我试试你提供的Ingress Nginx。谢谢! - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接