关于docker:国内环境WSL2在http代理下运行minikube

56次阅读

共计 1231 个字符,预计需要花费 4 分钟才能阅读完成。

因为国内环境下无法访问 k8s.gcr.io,因此须要设置代理来拜访。如果没有正确设置好,在运行 minikube start 后会显示以下正告:

❗ This container is having trouble accessing https://k8s.gcr.io

阐明这个容器不能失常拜访到 k8s.gcr.io 去拉取镜像

参照 https://minikube.sigs.k8s.io/… 正确配置的办法为:

export HTTP_PROXY=http://<proxy hostname:port>
export HTTPS_PROXY=https://<proxy hostname:port>
export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24,192.168.49/24

minikube start

(官网文档漏掉了192.168.49/24)

问题就在于怎么让 minikube 连上 windows 的梯子。

假如咱们在 windows 关上了一个容许来自局域网连贯的 HTTP 代理服务,端口为 10809。
那么为 WSL2 配置代理时,咱们首先要晓得 WSL2 下,windows 的 IP 地址,则须要运行

cat /etc/resolv.conf

其中显示的 nameserver 则为 WSL2 连贯到 windows 的 IP 地址,假如值为172.80.18.1 因而咱们能够为 WSL2 设置梯子:

export HTTP_PROXY=http://172.80.18.1:10809
export HTTPS_PROXY=http://172.80.18.1:10809

这样咱们就能在 WSL2 中应用到代理服务拜访外网

!然而这样也无奈让 minikube 连贯到外网。

因为 minikube 是运行在 docker desktop 中的,不能间接应用到 WSL2 的网络(有误请斧正)。而咱们在开启 WSL2 中运行 minikube 的时候,minikube 的零碎会应用 WSL2 的网络环境变量(HTTP_PROXY, HTTPS_PROXY, NO_PROXY)作为 minikube 的环境变量。因而,正确的填写形式是:

export HTTP_PROXY=http://host.docker.internal:10809
export HTTPS_PROXY=http://host.docker.internal:10809
export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24,192.168.49/24

minikube start

其中 host.docker.internal 在容器中会被容器的 DNS 服务解析为宿主的 IP 地址,也就是容器与 windows 通信的 IP 地址,相似 WSL2 与 windows 通信的 IP 地址。
这样设置,minikube 就能应用到零碎代理。

正文完
 0