Ste*_*eve 5 nginx kubernetes kubernetes-ingress nginx-ingress
我v1.22.1在裸机 CentOS 中设置了一个 Kubernetes 集群。我在按照此链接设置 Nginx Ingress 控制器时遇到问题。
我按照步骤 1-3 进行了完全相同的操作,但CrashLoopBackOff在 nginx 入口控制器 pod 中出现错误。我检查了 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
Run Code Online (Sandbox Code Playgroud)
我相信我的 IngressClass 设置正确,如下所示:
[root@dev1 deployments]# kubectl get IngressClass
NAME CONTROLLER PARAMETERS AGE
nginx nginx.org/ingress-controller <none> 2m12s
Run Code Online (Sandbox Code Playgroud)
所以我不知道为什么在获取 IngressClass nginx 时显示错误。有人能给我一些灯光吗?
我在 CentOS 7 上创建了一个单节点集群。kubeadm并得到了同样的错误。
你和我之所以能够继续下去,只是因为我们一开始就错过了这个命令:
git checkout v1.12.1
Run Code Online (Sandbox Code Playgroud)
主要区别ingress-class.yaml在于networking.k8s.io/v1beta1inv1.12.1和networking.k8s.io/v1inmaster分支。
当我第二次去这里并切换分支后,我立即看到了这个错误:
$ 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"
Run Code Online (Sandbox Code Playgroud)
看起来其他资源尚未更新以在 Kubernetes 上使用v1.22+。
我在集群上测试了完全相同的方法v1.21.4,它的效果非常好。所以你可以考虑降级集群。
如果您不太习惯使用 NGINX 入口控制器(支持Nginx inc,可以尝试使用ingress nginx开发的 NGINX 入口控制器kubernetes community。我在 上测试过v1.22,效果很好。请参见
裸机集群上的安装。
PS 这可能会令人困惑,但是有两个免费的 nginx 入口控制器,它们是由不同的团队开发的。还有第三个选项 - NGINX Plus,它是付费的并且有更多选项。请看这里的区别
| 归档时间: |
|
| 查看次数: |
5961 次 |
| 最近记录: |