无法使用Minikube在Windows Home上的浏览器中访问Kubernetes Ingress? [英] Could not access Kubernetes Ingress in Browser on Windows Home with Minikube?

查看:45
本文介绍了无法使用Minikube在Windows Home上的浏览器中访问Kubernetes Ingress?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我面临的问题是我无法使用其IP访问浏览器上的Kubernetes入口.我已经在Windows 10 Home上安装了K8和Minikube.

我正在关注此正式文档-

  1. 接下来,我展示了上面创建的部署.为此,我运行了以下命令.

    kubectl公开部署Web --type = NodePort --port = 8080

这创建了一个服务,可以通过运行以下命令来查看该服务:

  kubectl获取服务网站 

该服务的屏幕截图如下所示:

  1. 我现在可以通过运行以下命令在浏览器上访问该服务:

    minikube服务网站

在下面的屏幕截图中,您可以看到我能够在浏览器中查看它.

  1. 接下来,我通过运行以下命令创建了一个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/

    1. 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:

    1. 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:

    1. 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.

    1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆