【问题标题】:kubernetes: pods cannot connect to internetkubernetes:豆荚无法连接到互联网
【发布时间】:2019-09-03 01:39:25
【问题描述】:

我无法从 pod 连接到互联网。我的 kubernetes 集群在代理后面。
我已经设置了/env/environment/etc/systemd/system/docker.service.d/http_proxy.conf,并确认环境变量(http_proxyhttps_proxyHTTP_PROXYHTTPS_PROXYno_proxyNO_PROXY)是正确的。 但是在吊舱中,当我尝试echo $http_proxy 时,答案是空的。我也试过curl -I https://rubygems.org,但它返回了curl: (6) Could not resolve host: rubygems.org
所以我认为 pod 没有正确接收环境值,或者我忘记做我应该做的事情。应该怎么解决?

我试过export http_proxy=http://xx.xx.xxx.xxx:xxxx; export https_proxy=...
之后,我再次尝试curl -I https://rubygems.org,我可以收到 200 的标题。

【问题讨论】:

标签: kubernetes proxy calico


【解决方案1】:

我看到的是您的 proxy.conf 名称有误。 根据official documention,名称应该是/etc/systemd/system/docker.service.d/http-proxy.conf而不是/etc/systemd/system/docker.service.d/http_proxy.conf

接下来添加代理,重新加载守护进程并重启 docker,如 cmets another answer 中提供的那样

/etc/systemd/system/docker.service.d/http_proxy.conf:

内容:

    [Service]
    Environment="HTTP_PROXY=http://x.x.x:xxxx"
    Environment="HTTPS_PROXY=http://x.x.x.x:xxxx"

# systemctl daemon-reload
# systemctl restart docker

或者,根据@mk_ska answer,您可以

将 http_proxy 设置添加到您的 Docker 机器以便转发 来自嵌套 Pod 容器的数据包通过目标代理服务器。

对于基于 Ubuntu 的操作系统:

在文件中添加 export http_proxy='http://:' 记录 /etc/default/docker

对于基于 Centos 的操作系统:

在文件中添加 export http_proxy='http://:' 记录 /etc/sysconfig/docker

之后重启 Docker 服务。

上面将为docker引擎将使用的所有容器设置代理

【讨论】:

  • 我尝试这样做,但无法解决问题...在pod中,似乎没有继承环境变量。我还发现了另一个问题(如果我暴露 http_proxy,pod 无法解析内部服务器名称)所以我将关闭这个问题并寻求另一种方式。无论如何,谢谢你的帮助! ;)
  • 您需要对集群的 IP 范围使用 no_proxy。您不希望该流量通过您的代理路由
猜你喜欢
  • 1970-01-01
  • 2022-08-04
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 1970-01-01
相关资源
最近更新 更多