我们确实在代理后面部署了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正确设置代理环境参数?
非常感谢您!
答案 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