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

Docker 如何为kubernetes(v1.11.2)集群设置代理设置(http_代理变量)?,docker,proxy,kubernetes,http-proxy,squid,Docker,Proxy,Kubernetes,Http Proxy,Squid,我设置了一个Kubernetes群集,由于组织策略的原因,该群集无法连接internet。现在有一些服务,我需要通过互联网沟通。为了解决这个问题,我在K8s集群之外设置了一个转发代理(Squid)。我的K8s集群的所有节点都可以使用前向代理访问“google.com”。但我无法让我的播客通过代理进行通信 我在所有主节点和工作节点上设置了以下变量: export http_proxy="http://10.x.x.x:3128" export https_proxy="https://10.x.x

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

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

export http_proxy="http://10.x.x.x:3128"
export https_proxy="https://10.x.x.x:3128"
我能够从主节点和工作节点中卷曲google.com。但当我将其附加到容器中时,我注意到没有变量http\u proxy和https\u proxy。而且它不能成功地执行卷曲

我的播客和服务网络与我的虚拟机网络不同

pod-network-cidr=192.167.0.0/16 
service-cidr 192.168.0.0/16 
我的虚拟机网络就像:

Master  -> 10.2.2.40
Worker1 -> 10.2.2.41
Worker2 -> 10.2.2.42
Worker3 -> 10.2.2.43
我的转发代理正在运行

Forward Proxy: 10.5.2.30

我使用的是kubernetes v1.11.2版。这里有什么帮助,比如我应该将kubernetes群集的http_代理设置放在哪里,以使其对所有Pod和服务有效?

您可以将
http_代理设置添加到Docker机器,以便通过目标代理服务器转发嵌套Pod容器中的数据包

对于基于Ubuntu的操作系统:

导出http\u proxy='http://:'
记录添加到文件
/etc/default/docker

对于基于Centos的操作系统:

导出http\u proxy='http://:'
记录添加到文件
/etc/sysconfig/docker


然后重新启动Docker服务。

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

ENV HTTP_PROXY http://10.x.x.x:PORT

对于docker服务,请使用systemd设置文件:

创建一个文件:

/etc/systemd/system/docker.service.d/http-proxy.conf
内容如下:

[Service]
Environment="HTTP_PROXY=http://10.x.x.x:3128"
Environment="HTTPS_PROXY=http://10.x.x.x:3128"
(也可以不包含任何代理变量)

您需要重新加载systemctl并重新启动docker服务:

systemctl daemon-reload
systemctl restart docker

对于能够连接到代理的容器,请使用mk_sta所说的
/etc/default/docker
/etc/sysconfig/docker

您是否在Kubernetes集群中使用了
kube dns
coredns
dns解析服务?我使用了kube-dns。您建议的解决方案将为所有需要的容器设置代理将使用此docker引擎。因此,我不认为这是正确的答案。