[minikube 文档中文翻译] 手册 - 代理和 VPN

手册 - 代理和 VPN

如何通过 VPN 或 HTTP/HTTPS 代理使用 minikube

minikube 需要通过 HTTP、HTTPS 和 DNS 协议访问互联网。

代理

如果需要 HTTP 代理来访问互联网,您可能需要使用环境变量将代理连接信息传递给 minikube 和 Docker:

  • HTTP_PROXY - HTTP 代理的 URL

  • HTTPS_PROXY - HTTPS 代理的 URL

  • NO_PROXY - 不应通过代理的主机的逗号分隔列表。

这里的 NO_PROXY 变​​量很重要:如果不设置它,minikube 可能无法访问 VM 内的资源。 minikube 使用两个 IP 范围,它们不应该

通过代理:

  • 192.168.59.0/24:由 minikube VM 使用。可通过 --host-only-cidr 为某些虚拟机管理程序配置

  • 192.168.39.0/24:由 minikube kvm2 驱动程序使用。

  • 192.168.49.0/24:由 minikube docker driver 的第一个集群使用。

  • 10.96.0.0/12:由服务集群 IP 使用。可通过 --service-cluster-ip-range 配置

一个重要提示:如果非 Kubernetes 应用程序(例如 Firefox 或 Chrome)需要 NO_PROXY,您可能需要专门将 minikube IP 添加到逗号分隔列表中,因为它们可能不理解 IP 范围(#3827)。

示例用法

macOS 和 Linux

1
2
3
4
5
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.39.0/24

minikube start

要使环境变量持久化,请考虑将声明添加到 ~/.bashrc 或存储用户设置的环境变量的任何位置。

Windows

1
2
3
4
5
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.39.0/24

minikube start

要持久化设置这些环境变量,请考虑将它们添加到您的系统设置或使用 setx

故障排除

unable to cache ISO… connection refused

1
2
3
4
5
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_PROXYHTTP_PROXY 定义的 host:port 组合不正确,或者代理不可用。

Unable to pull images…Client.Timeout exceeded while awaiting headers

1
2
3
4
5
Unable to pull images, which may be OK:

failed to pull image "k8s.gcr.io/kube-apiserver:v1.13.3": output: Error response from daemon:
Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection
(Client.Timeout exceeded while awaiting headers)

此错误表示在 VM 中运行的容器运行时无法访问 Internet。验证您是否将适当的值传递给 --docker-env HTTPS_PROXY

x509: certificate signed by unknown authority

1
2
3
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.13.3:
output: Error response from daemon:
Get https://k8s.gcr.io/v2/: x509: certificate signed by unknown authority

这是因为 minikube VM 被隐藏在一个代理后面,该代理重写 HTTPS 响应以包含它自己的 TLS 证书。解决方案是将代理证书安装到启动时复制到 VM 的位置,以便对其进行验证。

向您的 IT 部门索取适当的 PEM 文件,并将其添加到:

1
~/.minikube/files/etc/ssl/certs

或者

1
~/.minikube/certs

然后运行 ​​minikube deleteminikube start

downloading binaries: proxyconnect tcp: tls: oversized record received with length 20527

HTTPS_PROXY 提供的值可能不正确。验证该值是否指向 HTTP 代理而不是 HTTPS 代理。

VPN

minikube 需要从主机访问以下 IP 范围:

  • 192.168.59.0/24:由 minikube VM 使用。可通过 --host-only-cidr 为某些虚拟机管理程序配置

  • 192.168.39.0/24:由 minikube kvm2 驱动程序使用。

  • 10.96.0.0/12:由服务集群 IP 使用。可通过 --service-cluster-ip-range 配置

不幸的是,许多 VPN 配置通过加密隧道将数据包路由到这些目的地,而不是允许数据包进入 minikube 虚拟机。

可能的解决方法

    1. 如果您有访问权限,请在您的 VPN 软件中将上述 IP 范围列入白名单。
    1. 在您的 VPN 软件中,选择类似于“使用 VPN 时允许本地 (LAN) 访问”(Cisco VPN 示例)的选项。
    1. 您可能会幸运地为 --host-only-cidr--service-cluster-ip-range 标志选择替代值。
    1. 关闭 VPN

原文链接

Proxies and VPNs | minikube - https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/