代理和 VPN
minikube 需要通过 HTTP、HTTPS 和 DNS 协议访问互联网。
代理
如果需要通过 HTTP 代理访问互联网,您可能需要使用环境变量将代理连接信息传递给 minikube 和 Docker。
HTTP_PROXY- 您的 HTTP 代理 URLHTTPS_PROXY- 您的 HTTPS 代理 URLNO_PROXY- 以逗号分隔的主机列表,这些主机不应通过代理访问。
这里的 NO_PROXY 变量很重要:如果不设置它,minikube 可能无法访问 VM 内的资源。minikube 使用四个默认 IP 范围,这些范围不应通过代理访问。
- 192.168.59.0/24: minikube VM 使用。对于某些 Hypervisor,可通过
--host-only-cidr配置。 - 192.168.39.0/24: minikube kvm2 驱动程序使用。
- 192.168.49.0/24: minikube docker 驱动程序的第一个集群使用。
- 10.96.0.0/12: 服务集群 IP 使用。可通过
--service-cluster-ip-range配置。
一个重要注意事项:如果非 Kubernetes 应用程序(如 Firefox 或 Chrome)需要 NO_PROXY,您可能需要将 minikube IP 专门添加到逗号分隔列表中,因为它们可能无法理解 IP 范围 (#3827)。
示例用法
macOS 和 Linux
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.59.0/24,192.168.49.0/24,192.168.39.0/24
minikube start
要使导出的变量永久生效,请考虑将声明添加到 ~/.bashrc 或存储用户设置的环境变量的任何位置。
Windows
set HTTP_PROXY=http://<proxy hostname:port>
set HTTPS_PROXY=https://<proxy hostname:port>
set NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.59.0/24,192.168.49.0/24,192.168.39.0/24
minikube start
要永久设置这些环境变量,请考虑将其添加到系统设置中或使用 setx。
故障排除
无法缓存 ISO... 连接被拒绝
Unable to start VM: unable to cache ISO: https://storage.googleapis.com/minikube/iso/minikube.iso:
failed to download: failed to download to temp file: download failed: 5 error(s) occurred:
* Temporary download error: Get https://storage.googleapis.com/minikube/iso/minikube.iso:
proxyconnect tcp: dial tcp <host>:<port>: connect: connection refused
此错误表示 HTTPS_PROXY 或 HTTP_PROXY 定义的主机:端口组合不正确,或者代理不可用。
无法拉取镜像...Client.Timeout exceeded while awaiting headers
Unable to pull images, which may be OK:
failed to pull image "registry.k8s.io/kube-apiserver:v1.13.3": output: Error response from daemon:
Get https://registry.k8s.io/v2/: net/http: request canceled while waiting for connection
(Client.Timeout exceeded while awaiting headers)
此错误表示在 VM 内运行的容器运行时无法访问互联网。请验证您是否正在将适当的值传递给 --docker-env HTTPS_PROXY。
x509: certificate signed by unknown authority
[ERROR ImagePull]: failed to pull image registry.k8s.io/kube-apiserver:v1.13.3:
output: Error response from daemon:
Get https://registry.k8s.io/v2/: x509: certificate signed by unknown authority
这是因为 minikube VM 被困在一个重写 HTTPS 响应以包含其自己的 TLS 证书的代理后面。解决方案是将代理证书安装到启动时复制到 VM 的位置,以便可以对其进行验证。
向您的 IT 部门索取适当的 PEM 文件,并将其添加到
~/.minikube/files/etc/ssl/certs
或
~/.minikube/certs
然后运行 minikube delete 和 minikube start。
下载二进制文件:proxyconnect tcp: tls: oversized record received with length 20527
提供的 HTTPS_PROXY 值可能不正确。请验证该值是否未指向 HTTP 代理而不是 HTTPS 代理。
VPN
minikube 需要从主机访问以下 IP 范围
- 192.168.59.0/24: minikube VM 使用。对于某些 Hypervisor,可通过
--host-only-cidr配置。 - 192.168.39.0/24: minikube kvm2 驱动程序使用。
- 10.96.0.0/12: 服务集群 IP 使用。可通过
--service-cluster-ip-range配置。
不幸的是,许多 VPN 配置会将发往这些目的地的包路由通过加密隧道,而不是允许包直接发送到 minikube VM。
可能的解决方案
- 如果您有权限,请在 VPN 软件中将上述 IP 范围列入白名单。
- 在 VPN 软件中,选择类似于“使用 VPN 时允许本地 (LAN) 访问”的选项 (Cisco VPN 示例)
- 您可以尝试为
--host-only-cidr和--service-cluster-ip-range标志选择替代值。 - 关闭 VPN