Minikube 外部注册表 无法拉取映像 redis-ha



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

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

这使我可以在Minikube中构建本地Dockerfile,并且在这方面做得很好,并且部署可以很好地处理本地映像。

然后我用头盔安装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

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

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

迷你库贝版本minikube version: v0.25.0

适用于 Mac 的 DockerVersion 17.12.0-ce-mac55 (23011)

因为它似乎无法解析 URL

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

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

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

我不知道根本原因是什么......也许米尼库贝只是脆弱,但最终:

移除迷你库贝rm -rf ~/.minikube

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

重新运行初始化helm init

现在一切都在按应有的方式发展......

最新更新