我遇到了同样的问题,并在做了几次错误的转弯后分享了我学到的东西。这是 minikube v0.19.0。如果您有旧版本,则可能需要更新。
请记住,我们需要完成两件事:
- 确保 kubctl 在连接到桌面上的 minikube 时不通过代理。
- 确保 minikube 中的 docker 守护进程在需要连接到映像存储库时确实通过代理。
首先,确保您的代理设置在您的环境中是正确的。这是我的 .bashrc 中的一个示例:
export {http,https,ftp}_proxy=http://${MY_PROXY_HOST}:${MY_PROXY_PORT}
export {HTTP,HTTPS,FTP}_PROXY=${http_proxy}
export no_proxy="localhost,127.0.0.1,localaddress,.your.domain.com,192.168.99.100"
export NO_PROXY=${no_proxy}
有几点需要注意:
- 我设置了小写和大写。有时这很重要。
- 192.168.99.100 来自
minikube ip
. 您可以在集群启动后添加它。
好的,这样应该可以确保 kubectl 正常工作。现在我们有了下一个问题,即确保 minikube 中的 Docker 守护程序配置了您的代理设置。你这样做,正如 Pmat 提到的那样:
$ minikube delete
$ minikube start --docker-env HTTP_PROXY=${http_proxy} --docker-env HTTPS_PROXY=${https_proxy} --docker-env NO_PROXY=192.168.99.0/24
要验证这些设置是否已采用,请执行以下操作:
$ minikube ssh -- systemctl show docker --property=Environment --no-pager
您应该会看到列出的代理环境变量。
为什么这样做minikube delete
?因为没有它,如果您之前创建了一个集群(比如没有代理信息),启动将不会更新 Docker 环境。也许这就是为什么 Pmat 没有成功通过 --docker-env 启动(或者它可能是在旧版本的 minikube 上)。