当前位置: 首页 > 知识库问答 >
问题:

无法使用Minikube在Windows Home的浏览器中访问Kubernetes Ingress?

裴经义
2023-03-14

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

我在关注这个官方文档——https://kubernetes . io/docs/tasks/access-application-cluster/ingress-minikube/

>

  • 首先,我通过在Minikube上运行以下命令创建了部署。

    kubectl create deploy web --image=gcr.io/谷歌-samples/hello-app:1.0

    接下来,我公开了我在上面创建的部署。为此,我运行了以下命令。

    kubectl 公开部署 Web --类型=节点端口 --port=8080

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

    kubectl get service web
    

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

    迷你库贝服务网

    接下来,我通过运行以下命令创建了一个入口:

    kubectl apply-f https://k8s . io/examples/service/networking/example-ingress . YAML

    顺便说一下,入口yaml代码是:

    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 ingress
    

    入口ip列为192.168.49.2。因此,这意味着如果我应该在浏览器中打开它,那么它应该会打开,但不幸的是不会。显示无法访问网站。请参见下面的屏幕截图。

    是什么问题。请为我提供解决方案?

    我还添加了 etc\hosts 文件的映射。

    192.168.49.2 hello-world.info
    

    然后我也试着在浏览器上打开hello-world.info,但是没有成功。

    在下面的图片中,我已经ping到hello-world.info,它将转到IP地址192.168.49.2。这表明etc\hosts映射是正确的:

    < code > kubectl describe services web 提供了以下详细信息:

    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>
    

    kubectl 描述入口示例 - 入口给出了以下输出:

    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>
    

    请帮忙。谢谢你。

  • 共有3个答案

    邓越泽
    2023-03-14

    尝试删除此批注<代码>nginx.ingress.kubernetes。io/rewrite目标:/$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
    
    陈欣荣
    2023-03-14

    在我的案例中(win10 minikube entres minikube-addon),以下内容有所帮助:

    1. %WINDIR%\System32\驱动程序\等\主机文件中将自定义域 IP 设置为 127.0.01,即添加第 127.0.0.1 行 my-k8s.com
    2. Get ingress pod name: kubectl get pods -n ingress-nginx
    3. 开始端口转发:kubectl -n 入口-n 输入端口转发 pod/入口-nginx-控制器-5d88495688-dxxgw --地址 0.0.0.0 80:80 443:443,您应该将入口-nginx-控制器-5d88495688-dxxgw 替换为您的入口 Pod 名称。
    4. 享受在任何浏览器中使用自定义域上的入口(但仅在端口转发处于活动状态时)
    凤衡
    2023-03-14

    与OP有相同的问题,只能在共享入口的minikube-ssh中工作。山药在下面。

    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
    
    
     类似资料:
    • 问题内容: 我正在尝试在dockerizedselenium独立firefox浏览器上运行Ruby on Rails功能测试。似乎我在联网方面遇到问题,因为selenium实例无法连接到Capybara启动的URL。 这是我的示例文件: 我在启用网络的情况下开始docker-compose: 测试脚本像这样运行一个rspec命令 对于docker测试,我为Capybara启用了远程驱动程序: 最后

    • 我编写了一个非常简单的spring boot应用程序,并将其打包在Docker中。 docker文件的内容是: 我把它推到了docker hub。 我在aws上创建了一个新的EC2实例。然后我连接到它并键入以下命令: 最后一个命令在屏幕上给出了许多消息,表示spring boot应用程序正在运行。 看起来很棒。但是,当我打开浏览器并键入:http://ec2-54-86-87-68.compute

    • 我是kubernetes的新手,我尝试使用Kubernete运行小型应用程序。我创建了docker镜像并使用minikube运行它。所以应用程序非常简单,它只打印hello world。 我的dockerfile文件: deployment.yaml 我运行命令: 创建deployment.yaml 输出是: 服务/myhelloworldservice已创建 创建的部署.apps/我的问候世界

    • 问题内容: 关于使用SQL Server 2008 R2,我有一个问题。 我最近在我的计算机上遇到问题,因此必须重新启动Windows,并且必须将一个用户的权限授予另一用户(使用属性中的安全功能)。最初授予权限时,它通过“访问被拒绝”消息。 经过大量研究,它停止产生此错误(我也需要授予权限的用户不可用),然后导致另一个问题发生,但这一次是在SQL Server中。它产生此消息; 数据库[dbNam

    • 我正在尝试运行一个节点。docker上的js应用程序。我正在使用WSL,并已在docker上成功运行该应用程序。现在的问题是,当我尝试在浏览器上访问应用程序时,它显示为无响应。我无法在浏览器中访问它。我还有一个Reactjs应用程序在docker上运行,我可以通过浏览器访问该应用程序。我做错了什么?为什么在windows浏览器中无法访问Nodejs应用程序?下面是节点的Dockerfile。js

    • 本文向大家介绍使用浏览器访问python写的服务器程序,包括了使用浏览器访问python写的服务器程序的使用技巧和注意事项,需要的朋友参考一下 代码如下所示: 注意: 1.开始的时候file_n没有先定义,结果就报错:local variable ‘file_n' referenced before assignment 2.正则表达式一定要先验证筛取的内容是否正确。 3.要获取程序同级文件夹中文