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

在windows 10上,docker容器内minikube上的入口连接失败

萧和同
2023-03-14

学习本教程后:https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/

我的行动:

  • minkube启动
  • minikube插件启用入口
  • kubectl创建部署web--image=gcr.io/google-samples/hello-app: 1.0
  • kubectl公开部署web--type=NodePort--port=8080
  • 将条目添加到主机文件

我无法从PowerShellcurlhello-world.info(如果. yaml文件中没有指定主机,我也无法curl$(minikube ip)),但它可以在docker容器cli中工作:

# curl hello-world.info
Hello, world!
Version: 1.0.0
Hostname: web-79d88c97d6-pw565

Docker检查选项卡:

Environment
CONTAINER
docker

PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Mounts
/VAR
/var/lib/docker/volumes/minikube/_data

/LIB/MODULES
/lib/modules

Ports
22/tcp
127.0.0.1:0

2376/tcp
127.0.0.1:0

32443/tcp
127.0.0.1:0

5000/tcp
127.0.0.1:0

8443/tcp
127.0.0.1:0

ingress.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
PS D:\> kubectl get ing
NAME              CLASS    HOSTS              ADDRESS        PORTS   AGE
example-ingress   <none>   hello-world.info   192.168.49.2   80      22m
minikube version: v1.18.1
minikube docker image: gcr.io/k8s-minikube/kicbase  v0.0.18
system: Windows 10

编辑

我还尝试在cleanminikube上创建一个NodePort类型的服务,这样我就可以用clusterIP:servicePort访问它,但同样的事情也发生了。我可以在完成minikube ssh(IP:servicePort或127.0.0.1:servicePort)后在minikubee上访问它,所以服务工作得很好,但我无法从docker外部卷曲它。

第二版

现在我尝试了一些转发。下面的命令允许我访问127.0.0.1:8080上的“网络”服务

PS D:\> kubectl port-forward service/web 8080
Forwarding from 127.0.0.1:8080 -> 8080

我想它类似于执行minikube service web,但这不能用于入口。

迷你库贝隧道接缝为我做任何事情

第三版

我可以通过创建两个服务来验证入口正在工作:

kubectl create deployment web --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment web --type=NodePort --port=8080

kubectl create deployment web2 --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment web2 --type=NodePort --port=8080

和指向它的路径- ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - http:
        paths:
          - path: /web1
            pathType: Prefix
            backend:
              service:
                name: web
                port:
                  number: 8080
          - path: /web2
            pathType: Prefix
            backend:
              service:
                name: web2
                port:
                  number: 8080

docker cli(docker客户端):

# curl 127.0.0.1/web2
Hello, world!
Version: 1.0.0
Hostname: web2-5b669f8984-5tgpn
# curl 127.0.0.1/web1
Hello, world!
Version: 1.0.0
Hostname: web-79d88c97d6-8h6dq

通过查看主机名,您可以看到不同的播客响应。但我仍然无法从docker外面进入

共有1个答案

西门建安
2023-03-14

我遇到了同样的问题,没有找到Docker驱动程序的解决方案。但是我发现Minikobe仍然不支持Docker驱动程序的完整入口功能的信息:https://minikube.sigs.k8s.io/docs/drivers/docker/#known-issues

目前只有Linux支持入口和入口dns插件。见#7332

因此,使用虚拟盒驱动程序听起来像是一种可能的解决方案。(我现在正在尝试它,但你写的它应该有效)。

 类似资料:
  • 我下载了mysql jdbc驱动程序并上传到了jasperserver。下面是错误。

  • 问题内容: 我在本地主机上运行mysql,可以通过运行以下命令进行连接: 我还使用以下命令运行了Docker容器: 我想从docker容器访问Mysql数据库。所以我也从docker容器输入: 但这给了我错误: 我究竟做错了什么?端口似乎是正确的。 编辑1在码头工人的 输出: 问题答案: 即使将MySQL配置为侦听所有接口,然后从容器通过非环回IP访问MySQL,您仍可能会发现Docker的路由,

  • 在Ubuntu 20.04上运行新的Docker 20.10.1。此版本包括对主机的支持。码头工人。Linux上dockerd中的内部 我在使用SSL证书的容器中运行了一系列服务,我想使用Telegraf(稍后发送到Grafana仪表板)检查证书是否过期。 所有带有网络接口和Telegraf的服务都运行在同一个Docker主机上。所有服务都在自己的网桥网络中。我想在端口9000上从Telegraf

  • 我的问题和这个一模一样。但再次复制这个问题供大家参考: 我面临的问题是我无法使用其IP访问浏览器上的迷你库贝入口。我已经在Windows 10家庭上安装了迷你库贝,并使用泊坞驱动程序启动迷你)。 系统信息: 视窗 10 主页 迷你库贝(v1.18.1) Docker(minikube的驱动程序)- Docker引擎版本20.10.5 我在关注这个官方文档——https://kubernetes .

  • 我正在Windows 10 Home上使用Docker运行Landoop(图像)容器,使用WSL2。我可以做一个码头工人。具有多个服务的yaml文件: 从现在开始,我只运行到连接用户界面服务,根据配置文件,连接用户界面服务应该绑定在端口8084上。当我尝试访问其他服务,如kafka或模式注册服务时,我能够通过以下方式看到相应端口上的输出:

  • 问题内容: 我一直在尝试获取基本的nodeJS api以连接到mongo容器。两种服务都在docker- compose.yml文件中定义。我在这里和码头工人论坛上都读过无数类似的问题,所有这些都表明问题是您的mongo连接URI。这不是我的问题,您将在下面看到。 docker-compose.yml Docker文件 db / mongoose.js 设置mongodb连接 但是无论什么api容