我是k8s的初学者,我按照k8s官方文档创建了一个hel-world入口,但我无法使其工作。首先,我创建了一个服务,就像我得到的教程一样:
$ 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
到现在为止,一直都还不错。然而,我被困在入口部分。因此,我创建了类似于教程的入口:
$ 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: /$1
...
甚至在用我的minikube ip配置了/etc/hosts之后:192.168.99.102 hello world。信息,当我卷曲它或通过浏览器访问时,我会得到nginx 404。奇怪的是,我的入口没有地址,即使过了一段时间。有人能告诉我错误在哪里吗?
附言:我在这里询问之前做了研究。我检查minikube ingress插件是否已启用,ingress nginx控制器pod是否正在运行。
我的minikube版本是1.23,kubectl客户端和服务器版本是1.22.1。
如本文所述,Minikube 1.23.0的Ingress插件似乎有一个bug,与您看到的问题相匹配。ConfigMap问题阻止生成IngressClass(默认情况下通常为“nginx”),ingress服务将无法工作。
此问题已在1.23.1中修复,因此更新Minikube应该可以解决您的问题。