代理背后的Kubernetes Docker容器

时间:2018-09-05 18:30:56

标签: docker proxy kubernetes kubernetes-pod

我们确实在代理后面部署了Kubernetes集群,并成功配置了docker守护进程,以使用我们的代理来处理映像,如下页所述:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

我们确实已将Docker客户端配置为设置环境参数“ https_proxy”,“ http_proxy”和“ no_proxy”,如下页所示:https://docs.docker.com/network/proxy/#configure-the-docker-client

Kubernetes集群设置如下:

tmp %>%
  group_by(a) %>%
  mutate(dt = floor_date(lead(dt, 1) - 1, "month"))

# A tibble: 6 x 2
# Groups:   a [2]
  a     dt        
  <fct> <date>    
1 a     2017-04-01
2 a     2017-05-01
3 a     NA        
4 b     2017-07-01
5 b     2017-08-01
6 b     NA 

手动运行Docker容器-正确设置ENV参数

手动定义的docker容器的环境参数设置如下:

public class Main {
    static String rdword;
    static int n;

    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Random rd = new Random();

    n = rd.nextInt(3000);
    rdword= EnWords.words[n];
    String control = rdword;

    for (char i = 'a'; i < 'z'; i++ ) {
        control .replace (i, "_");
    }
}

Kubernetes POD-未设置ENV参数

上面使用的与Kubernetes POD相同的docker镜像没有代理环境参数(同一台机器aadigital1):

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

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

非常感谢您!

1 个答案:

答案 0 :(得分:2)

该状态的原因是带有代理的环境变量是docker客户端的功能。 Docker分为两部分:docker守护程序在套接字上公开的API和docker client 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