Kubernetes 没有为入口分配地址

Kubernetes is not assigning address to ingress

我是 k8s 的初学者,我按照 k8s official docs 创建了一个 hello-world ingress,但我无法让它工作。首先,我创建了一个服务,就像我得到的教程一样:

$ kubectl get service web 

NAME   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
web    NodePort   10.100.208.38   <none>        8080:31921/TCP   19m

所以,我可以通过浏览器访问我的服务:

$ minikube service web

Hello, world!
Version: 1.0.0
Hostname: web-79d88c97d6-xrshs 

到目前为止一切顺利。但是,我陷入了入口部分。所以我创建了这个入口,就像 tutorial:

$ kubectl describe ingress example-ingress

Name:             example-ingress
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend"  not found>)
Rules:
Host              Path  Backends
----              ----  --------
hello-world.info  
                /   web:8080 (172.17.0.4:8080)
Annotations:        nginx.ingress.kubernetes.io/rewrite-target: /
...

甚至在使用我的 minikube ip 配置 /etc/hosts 之后:192.168.99.102 hello-world.info,当我卷曲它或通过浏览器访问时,我得到 nginx 404。奇怪的是我的入口确实如此没有得到地址,即使过了一段时间。谁能指出错误出在哪里?

PS。在询问 here 之前,我做了我的研究。我检查我的 minikube ingress 插件是否已启用并且我的 ingress-nginx-controller pod 是 运行.

PS2。我的 minikube 版本是 1.23,我的 kubectl 客户端和服务器版本是 1.22.1.

似乎 Minikube 1.23.0 的 Ingress Addon 存在一个错误,如文档所述 here,这与您看到的问题相符。 ConfigMap 问题阻止生成 IngressClass(默认情况下通常为“nginx”)并且入口服务将无法工作。

这个问题是 fixed in 1.23.1,因此更新 Minikube 应该可以解决您的问题。