4

致力于在 Minikube 中设置开发环境并遇到从https://quay.io/v2/注册表中提取图像的问题。

我已经运行了命令:
eval $(minikube docker-env)

这让我可以Dockerfile在 Minikube 中构建我的本地镜像,并且它在这方面做得很好,并且部署与本地镜像配合得很好。

然后我使用 helm 安装 helm install stable/mssql-linux.

效果很好,它的图像指向microsoft/mssql-server-linux:2017-CU3 这里

我也在使用redis-ha并像这样安装:
helm install stable/redis-ha --set="rbac.create=false"

rbac.create=false似乎允许它安装在 Minikube 中而不会引起各种问题。然而,尽管创建了部署和服务......部署最终失败,因为它无法提取图像。

我收到以下错误: Failed to pull image "quay.io/smile/redis:4.0.8r0": rpc error: code = Unknown desc = Error response from daemon: Get https://quay.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

部署指向此注册表映像:quay.io/smile/redis:4.0.8r0

我几乎在所有可以指向的地方都更改了我的 DNS,8.8.8.8因为它似乎无法解析 URL。也可能只是我需要在某个地方添加注册表?我觉得它的注册表是特定的,因为 Minikube docker daemon 似乎能够从中提取docker hub但不能quay.io

如果我使用一个未运行的终端eval $(minikube docker-env)并在我的主机上使用 docker 守护程序,我可以quay.io/smile/redis:4.0.8r0很好地拉取图像...... ssh 进入 minikube 并尝试它无法拉取。

Minikube 版本 minikube version: v0.25.0

Docker for Mac Version 17.12.0-ce-mac55 (23011)

4

2 回答 2

1

因为它似乎无法解析 URL

是什么让你相信,当错误清楚地表明它有一个Client.Timeout exceeded while awaiting headers?它将注册表解析为 IP 地址,甚至显然打开了与它认为是注册表 IP 和端口的网络连接。但在那之后,minikube 中的网络堆栈实际上并没有允许流量流出。观察错误不是DNS,也不是连接被拒绝,而是连接超时。这几乎总是防火墙式的行为。

这闻起来非常非常像公司 HTTP 代理,因为您的机器可以与 Internet 交互,但 minikube 不能。

可以通过大量的故障排除步骤,但是,如果您对快速获胜感兴趣,您可以从您的工作主机上运行docker save quay.io/smile/redis:4.0.8r0 | ssh-into-minikube "docker load"minikube 并将其视为气隙。

于 2018-03-22T06:22:26.573 回答
0

我不知道根本原因是什么......也许 Minikube 只是脆弱但最终:

删除 minikube rm -rf ~/.minikube

重新开始跑步 minikube start --vm-driver=hyperkit

重新初始化helm init

现在一切都在拉动它应该......

于 2018-03-22T13:28:57.460 回答