无法使用Minikube在Windows Home的浏览器中访问Kubernetes入口?
我面临的问题是,我无法使用浏览器的IP访问Kubernetes入口。我已经在Windows10 Home上安装了K8s和Minikube 我遵循这份正式文件:无法使用Minikube在Windows Home的浏览器中访问Kubernetes入口?,kubernetes,kubectl,minikube,Kubernetes,Kubectl,Minikube,我面临的问题是,我无法使用浏览器的IP访问Kubernetes入口。我已经在Windows10 Home上安装了K8s和Minikube 我遵循这份正式文件: 首先,我在Minikube上运行下面的命令来创建部署 kubectl创建部署web--image=gcr.io/google samples/hello app:1.0 将创建部署,如下图所示: 接下来,我公开了我在上面创建的部署。为此,我运行了下面的命令 kubectl公开部署web--类型=节点端口--端口=8080 这创建了一
kubectl get service web
kubectl get ingress
该服务的屏幕截图如下所示:
kubectl get service web
kubectl get ingress
minikube服务网站
kubectl get service web
kubectl get ingress
kubectl应用-f
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: hello-world.info
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web
port:
number: 8080
将创建入口,我可以通过运行以下命令进行验证:
kubectl get service web
kubectl get ingress
下面给出了此操作的屏幕截图:
入口ip被列为192.168.49.2
。这意味着如果我在浏览器中打开它,它应该会打开,但不幸的是不会。显示无法访问该站点。请参阅下面的screeshot
问题是什么。请给我一个解决方案
我还添加了etc\hosts文件上的映射
192.168.49.2 hello-world.info
然后我还尝试在浏览器上打开hello-world.info,但没有成功
在下图中,我对IP地址为192.168.49.2的hello world.info进行了ping。这表明etc\hosts映射是正确的:
我还卷曲到minikube ip和hello world.info
,两者都得到超时。见下图:
kubectl描述服务网站提供了以下详细信息:
Name: web
Namespace: default
Labels: app=web
Annotations: <none>
Selector: app=web
Type: NodePort
IP: 10.100.184.92
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31880/TCP
Endpoints: 172.17.0.4:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
请帮忙。谢谢。尝试删除此批注。
nginx.ingres.kubernetes.io/rewrite-target://$1
并添加此注释:
annotations:
nginx.ingress.kubernetes.io/default-backend: ingress-nginx-controller
kubernetes.io/ingress.class: nginx
## tells ingress to check for regex in the config file
nginx.ingress.kubernetes.io/use-regex: "true"
此外,请将您的路线更新为:
- path: /?(.*) ## instead of just '/'
backend:
serviceName: web
servicePort: 8080
我相信,如果您检查入口详细信息,您将找到正确的IP
kubectl describe ingress example-ingress
有关入口的更多详细信息,请查看
如果以上内容没有帮助,请尝试此清单。检查这个
与OP有相同的问题,并且只在
minikube ssh
中工作,共享下面的ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: frontend-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
defaultBackend:
service:
name: default-http-backend
port:
number: 80
rules:
- host: myapp-com # domain (i.e. need to change host table)
http:
paths: # specified path below, only be working when there is more than 1 path; If only having 1 path, it's always using / as path
- path: /
pathType: Prefix
backend:
service:
name: frontend-service # internal service
port:
number: 8080 # port number that internal service exposes
- path: /e($|/)(.*)
pathType: Prefix
backend:
service:
name: express-service # internal service
port:
number: 3000 # port number that internal service exposes
运行
minikube服务web--url
,它会给我http://127.0.0.1:42459
。每次运行minikube服务web--url
命令时,端口都会发生更改。关于端口-我只是在关注官方文档的URL(问题本身给出的链接)。kubectl Descripte services web显示了服务详细信息。我已就这个问题补充了它的细节。请看一下。谢谢。和OP的问题完全一样。我试过同样的YAML,它在macbook上运行得很好,但在windows上运行得很好。在macbook中,我可以简单地使用主机表中指定的域名通过浏览器访问东西;在windows中,ingress不工作,除了主机中的minikube ssh
和curl域名
,然后它返回数据ingress IP和minikube IP对我来说是相同的,即192.168.49.2。所以这没什么区别。更新了答案不起作用…你的代码基于Google Kubernetes引擎,这对我来说不起作用,因为我是在我的pc上本地进行的。你能解释一下,在我的情况下如何使用minikube ssh吗?我所做的只是用我的案例所需的更改来更新您的入口。然后我通过在浏览器上输入入口ip地址进行检查,但仍然没有任何更改。问题依然存在。嗨@yogihosting,很抱歉迟了回复你。一旦你设置了入口并进行了必要的更改,我想你是在windows的powershell中运行minikube,对吗?确保您“启用插件入口”,并有一个单独的控制台运行“minikube tunnel”。另外,将主机名和ip地址添加到windows的主机表中。然后在powershell中键入'minikue ssh',它将为您提供命令行。然后你可以“curl myapp.com”,然后你会得到预期的响应谢谢。为我工作。所以结论是,在浏览器上它不会打开。但是我们可以从minikube ssh中卷曲它