根据 Kubernetes 官网上的这篇文章,我想在本地集群中为我的服务设置主机名(我已经实现了一个
hello world
示例,就像文档一样)。
我在启动纯 minikube 后编写了这些命令:
$ minikube addons enable ingress
$ k get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-5pthd 0/1 Completed 0 137m
ingress-nginx-admission-patch-h9vrh 0/1 Completed 1 137m
ingress-nginx-controller-56cf58c77c-9rnr6 1/1 Running 0 137m
$ k create ns hello
$ k create deployment web --image=gcr.io/google-samples/hello-app:1.0 -n hello
$ k expose deployment web --type=NodePort --port=8080 -n hello
$ k get service web -n hello
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web NodePort 10.96.235.52 <none> 8080:30282/TCP 61s
$ k apply -f https://k8s.io/examples/service/networking/example-ingress.yaml -n hello
$ k get ingress -n hello
NAME CLASS HOSTS ADDRESS PORTS AGE
example-ingress <none> hello-world.info 80 35s
我的 minikube IP 是
192.168.49.2
,所以我将以下行添加到我的 /etc/hosts
的末尾。
192.168.49.2 hello-world.info
但是,我在浏览器中看不到任何内容。我对
minikube service web -n hello
或 Kubernetes 端口转发没有任何问题。看来我的入口有问题。
显然这是 minikube 的一个已知问题,Ingress 仅在 Linux 上正常工作。启用插件后,请运行“minikubetunnel”,您的入口资源将在“192.168.49.2”
可用。因此,在这种情况下,当在 Windows/MacOS 上使用 Minikube 时,您实际上应该使用
minikube 隧道。请记住,Minikube 主要用于测试和学习目的,因此它的某些功能可能并不理想。