代理后面的Kubernetes Docker容器

代理后面的Kubernetes Docker容器,docker,proxy,kubernetes,kubernetes-pod,Docker,Proxy,Kubernetes,Kubernetes Pod,我们已经在代理后面部署了Kubernetes群集,并成功地配置了docker守护进程,以使用我们的代理来推送图像,如下页所述: 我们已将Docker客户端配置为设置环境参数“https\u proxy”、“http\u proxy”和“no\u proxy”,如下页所定义: Kubernetes群集设置如下所示: aadigital1:~ # kubectl get node NAME STATUS ROLES AGE VERSION aadig

我们已经在代理后面部署了Kubernetes群集,并成功地配置了docker守护进程,以使用我们的代理来推送图像,如下页所述:

我们已将Docker客户端配置为设置环境参数“https\u proxy”、“http\u proxy”和“no\u proxy”,如下页所定义:

Kubernetes群集设置如下所示:

aadigital1:~ # kubectl get node
NAME         STATUS    ROLES         AGE       VERSION
aadigital1   Ready     master,node   9d        v1.10.4
aadigital2   Ready     node          9d        v1.10.4
aadigital3   Ready     node          9d        v1.10.4
aadigital4   Ready     node          9d        v1.10.4
aadigital5   Ready     node          9d        v1.10.4
手动运行Docker容器-正确设置环境参数

手动部署的docker容器的环境参数设置如下:

aadigital1:~ # docker run -i -t odise/busybox-curl ash
/ # printenv
HTTPS_PROXY=http://ssnproxy.ssn.xxx.com:80/
no_proxy=localhost,127.0.0.0,127.0.1.1,127.0.1.1,local.home,80.250.142.64,80.250.142.65,80.250.142.66,80.250.142.69,80.250.142.70,80.250.142.71,aadigital1.aan.xxx.com,aadigita2.ssn.xxx.com,aadigital3.ssn.xxx.com,aadigital4.ssn.xxx.com,aadigita5.ssn.xxx.com,aadigital6.ssn.xxx.com
HOSTNAME=0360a9dcd20b
SHLVL=1
HOME=/root
NO_PROXY=localhost,127.0.0.0,127.0.1.1,127.0.1.1,local.home,80.250.142.64,80.250.142.65,80.250.142.66,80.250.142.69,80.250.142.70,80.250.142.71,aadigital1.aan.xxx.com,aadigita2.ssn.xxx.com,aadigital3.ssn.xxx.com,aadigital4.ssn.xxx.com,aadigita5.ssn.xxx.com,aadigital6.ssn.xxx.com
https_proxy=http://ssnproxy.ssn.xxx.com:80/
http_proxy=http://ssnproxy.ssn.xxx.com:80/
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
HTTP_PROXY=http://ssnproxy.ssn.xxx.com:80/
Kubernetes吊舱-未设置环境参数

上面用作Kubernetes吊舱的同一docker映像没有代理环境参数(同一台机器aadigital1):

我们如何配置Kubernetes/Docker,以便为POD正确设置代理环境参数


多谢各位

该状态的原因是具有代理的环境变量是docker客户端的特性。Docker分为两部分:Docker守护进程在套接字上公开的API和Docker客户端CLI,您可以使用它们运行容器Docker run。。。。因此,该命令将命中docker daemon API,使其成为“某物”。不幸的是,Kubernetes是另一个API客户机,这意味着Kubernetes不使用docker客户机来调度容器(Kubernetes直接使用SDK访问API),所以您看不到预期的环境变量

为了解决这个问题,我建议使用代理值创建ConfigMap,例如

apiVersion: v1
kind: ConfigMap
metadata:
  name: your-config-map-name
  labels:
    app: your-best-app
data:
  HTTPS_PROXY: http://ssnproxy.ssn.xxx.com:80/
  HTTP_PROXY: http://ssnproxy.ssn.xxx.com:80/
并使用将它们作为环境变量装载到部署中

envFrom:
  - configMapRef:
      name: your-config-map-name
envFrom:
  - configMapRef:
      name: your-config-map-name