致力于在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
现在一切都在按应有的方式发展......