如何为 kubernetes (v1.11.2) 集群设置代理设置(http_proxy 变量)?

Met*_*der 8 proxy squid http-proxy docker kubernetes

我设置了一个 Kubernetes 集群,但由于组织政策的原因,该集群无法连接互联网。现在有一些服务需要通过互联网进行通信。为了解决这个问题,我设置了一个位于 K8s 集群外部的转发代理 (Squid)。我的 K8s 集群的所有节点都可以使用正向代理访问“google.com”。但我无法让我的 Pod 通过该代理进行通信。

我在所有主节点和工作节点上设置了以下变量:

export http_proxy="http://10.x.x.x:3128"
export https_proxy="https://10.x.x.x:3128"
Run Code Online (Sandbox Code Playgroud)

我能够从主节点和工作节点卷曲 google.com。但是当我附加到容器中时,我注意到没有变量 http_proxy 和 https_proxy。并且它无法执行成功的卷曲。

我的 Pod 和服务网络与我的 VM 网络不同

pod-network-cidr=192.167.0.0/16 
service-cidr 192.168.0.0/16 
Run Code Online (Sandbox Code Playgroud)

我的虚拟机网络如下:

Master  -> 10.2.2.40
Worker1 -> 10.2.2.41
Worker2 -> 10.2.2.42
Worker3 -> 10.2.2.43
Run Code Online (Sandbox Code Playgroud)

我的转发代理运行在

Forward Proxy: 10.5.2.30
Run Code Online (Sandbox Code Playgroud)

我使用的是 kubernetes 版本 v1.11.2。这里是否有任何帮助,例如我应该将 kubernetes 集群的 http_proxy 设置放在哪里,以使其对所有 Pod 和服务有效?

Met*_*der 5

所以我发现要为特定容器设置代理,请在 Dockerfile 中设置 env 变量。

ENV HTTP_PROXY http://10.x.x.x:PORT
Run Code Online (Sandbox Code Playgroud)