无法使用Minikube在Windows Home上的浏览器中访问Kubernetes Ingress? [英] Could not access Kubernetes Ingress in Browser on Windows Home with Minikube?
问题描述
我面临的问题是我无法使用其IP访问浏览器上的Kubernetes入口.我已经在Windows 10 Home上安装了K8和Minikube.
我正在关注此正式文档-
-
接下来,我展示了上面创建的部署.为此,我运行了以下命令.
kubectl公开部署Web --type = NodePort --port = 8080
这创建了一个服务,可以通过运行以下命令来查看该服务:
kubectl获取服务网站
该服务的屏幕截图如下所示:
-
我现在可以通过运行以下命令在浏览器上访问该服务:
minikube服务网站
在下面的屏幕截图中,您可以看到我能够在浏览器中查看它.
-
接下来,我通过运行以下命令创建了一个Ingress:
kubectl apply -f
入口ip列为
192.168.49.2
.因此,这意味着如果我应在浏览器中将其打开,则应将其打开,但不幸的是不能打开.它表明无法访问该网站.请参见下面的截图.出了什么问题.请为我提供解决方案吗?
我还添加了etc \ hosts文件上的映射.
<代码> 192.168.49.2 hello-world.info
然后,我还尝试在浏览器中打开hello-world.info,但是没有运气.
在下面的图片中,我已完成对
hello-world.info
的ping操作,该IP地址为192.168.49.2.这表明etc \ hosts映射是正确的:我也卷曲到minikube ip和
hello-world.info
都超时了.见下图:kubectl描述服务网站
提供以下详细信息:名称:网络命名空间:默认标签:app = web注释:< none>选择器:app = web类型:NodePortIP:10.100.184.92端口:< unset>8080/TCPTargetPort:8080/TCPNodePort:< unset>31880/TCP端点:172.17.0.4:8080会话亲和力:无外部流量策略:群集事件:< none>
kubectl describe ingress example-ingress
提供以下输出:名称:example-ingress命名空间:默认地址:192.168.49.2默认后端:default-http-backend:80(<错误:未找到端点"default-http-backend"">)规则:主机路径后端---- ---- --------hello-world.info/网站:8080 172.17.0.4:8080)注释:nginx.ingress.kubernetes.io/rewrite-target:/$ 1事件:< none>
请帮助.谢谢.
解决方案与OP具有相同的问题,并且仅在
minikube ssh
中起作用,并在下面共享ingress.yaml.apiVersion:networking.k8s.io/v1种类:入口元数据:名称:前端女主角注释:nginx.ingress.kubernetes.io/rewrite-target:/$ 2规格:defaultBackend:服务:名称:default-http-backend港口:数:80规则:-主机:myapp-com#域(即需要更改主机表)http:路径:以下指定的路径,仅当路径多于1个时有效;如果只有1条路径,则始终使用/作为路径- 小路:/pathType:前缀后端:服务:名称:前端服务#内部服务港口:number:8080#内部服务公开的端口号-路径:/e($ |/)(.*)pathType:前缀后端:服务:名称:快递服务#内部服务港口:number:内部服务公开的3000#端口号
I am facing the problem which is that I could not access the Kubernetes Ingress on the Browser using it's IP. I have installed K8s and Minikube on Windows 10 Home.
I am following this official document - https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/
First I created the deployment by running this below command on Minikube.
kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
The deployment get created which can be seen on the below image:
Next, I exposed the deployment that I created above. For this I ran the below command.
kubectl expose deployment web --type=NodePort --port=8080
This created a service which can be seen by running the below command:
kubectl get service web
The screenshot of the service is shown below:
I can now able to visit the service on the browser by running the below command:
minikube service web
In the below screenshot you can see I am able to view it on the browser.
Next, I created an Ingress by running the below command:
kubectl apply -f https://k8s.io/examples/service/networking/example-ingress.yaml
By the way the ingress yaml code is:
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
The ingress gets created and I can verify it by running the below command:
kubectl get ingress
The screenshot for this is given below:
The ingress ip is listed as
192.168.49.2
. So that means if I should open it in the browser then it should open, but unfortunately not. It is showing site can't be reached. See the below screeshot.What is the problem. Please provide me a solution for it?
I also added the mappings on etc\hosts file.
192.168.49.2 hello-world.info
Then I also tried opening hello-world.info on the browser but no luck.
In the below picture I have done ping to
hello-world.info
which is going to IP address 192.168.49.2. This shows etc\hosts mapping is correct:I also did curl to minikube ip and to
hello-world.info
and both get timeout. See below image:The
kubectl describe services web
provides the following details: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>
The
kubectl describe ingress example-ingress
gives the following output:Name: example-ingress Namespace: default Address: 192.168.49.2 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 Events: <none>
Kindly help. Thank you.
解决方案Having same issue as OP and things only work in
minikube ssh
, sharing the ingress.yaml below.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在Windows Home上的浏览器中访问Kubernetes Ingress?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!