繁体   English   中英

如何在 Kubernetes pod 中设置 no_proxy

[英]How to set no_proxy in Kubernetes pods

因为我的Kubernetes集群在企业代理后面,所以我需要通过环境变量在pods中设置http/https代理,并设置no_proxy以允许pod间和服务间通信以及与其他本地私有服务器的通信。

当通过 env 变量传递给 pod 时,代理 http/https 配置工作得很好; 但是 no_proxy 不能很好地工作,它破坏了内部 pod/服务通信。

我曾尝试在 Kubernetes 中的不同级别设置 no_proxy 和 NO_PROXY 失败,主要是在:

  • Docker 守护进程:/etc/systemd/system/docker.service.d/http-proxy.conf
  • Docker 客户端:/root/.docker/config.json(虽然在 CentOS 上使用 Docker v1.13.1 时似乎不适用)
  • Docker 客户端:通过在创建时传递给 Pod 的环境变量,在用于使用 kubectl 运行它们的 yaml 文件中
  • Kubernetes 主节点和工作节点作为环境变量
  • 以及上述设置的多种组合

POD 内的代理配置通过 POD 内的 env 变量成功:

导出 http_proxy="http://10.16.1.1:8080"
导出 https_proxy="https://10.16.1.1:8080"

但是,以上都不适用于 no_proxy 异常,我尝试了许多语法,还添加了我的节点、pod 和服务网络以及 .svc(如 OpenShift 所建议的)......如下所列:

export no_proxy=".svc,.example.com"
export no_proxy="localhost,127.0.0.0/8,10.1.16.0/24,10.240.0.0/16,10.241.0.0/16,*.domain.com"
export no_proxy=".svc,.default,.local,.cluster.local,localhost,127.0.0.0/8,10.1.16.0/24,10.240.0.0/16,10.241.0.0/16,.domain.com"
出口 NO_PROXY=$no_proxy

我在 CentOS7 上使用 Kubernetes v1.11.2 + Docker v1.13.1;
任何帮助,将不胜感激。

我们可以合理假设我们不直接使用IP地址访问外网服务器。 换句话说,我们使用 FQDN 来访问,比如 python.com、google.com、github.com,但不直接使用它们的 IP 地址。

有了这个假设,我们可以绕过所有直接 IP 地址访问的网络代理。

export no_proxy=localhost,.svc
printf -v allip '%s,' .{0..255}
export no_proxy="$no_proxy,${allip%,}"

这会将.0,.1,.2,...,.255到 no_proxy 环境变量。 这里没有魔法。 我们只是将 IP 地址视为 FQDN,因此后缀匹配用作 FQDN no_proxy 设置。 假设 .120 将匹配所有 IP 地址 xxx122。

我仔细查看了这个案例,发现这里的问题在于环境变量。 no_proxy变量不支持网络范围。

因此,理论上,您可以使用一些初始化脚本来排除所需的网络。 但是,这将非常棘手,因为可能有很多地址要放在那里。
不幸的是,我在网络方面没有那么丰富的经验,所以我无法帮助你更多地了解如何解决这个问题。 您可以在此处找到有关代理的更多信息。 在这种情况下,您可以阅读有关它的更多信息。 在 no_proxy 环境变量中设置网络范围

我在 OKD 上遇到了同样的问题,我解决了将以下环境变量添加到 deployment.yaml 的问题

    spec:
      containers:
        - env:
            - name: HTTP_PROXY
            - name: HTTPS_PROXY
            - name: http_proxy
            - name: no_proxy
            - name: https_proxy

有些变量可能是多余的,但我没有时间进行测试。 我希望它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM