【问题标题】:Squid proxy in kubernetesKubernetes 中的 Squid 代理
【发布时间】:2020-04-15 09:17:30
【问题描述】:

我在其中一个 AWS ec2 实例中安装了 squid 代理,并在 kubernetes 集群中运行 pod。

我在 deployment.yaml 文件中添加了 env 变量来导出 squid 代理 LB,如下所示

env:
    - 
       name: http_proxy
       value: "http://XXXX:3128"
    - 
       name: https_proxy
       value: "http://XXXX:3128"

如果我从 kubernetes pod 控制台发出 curl 请求,我可以看到访问被拒绝。

curl -k google.com

如果我尝试从运行在 kubernetes pod 中的应用程序访问,请求不会路由到 squid 代理

谁能建议我哪里做错了?

如何将来自 pod 中运行的应用程序的所有请求路由到 squid 代理?

【问题讨论】:

  • 您使用 env 作为入口域或 LB 记录?
  • 您找到解决方案了吗?我正在尝试访问 nginx 入口控制器后面的 squid 代理,而 nginx 甚至没有将其转发给 squid

标签: amazon-web-services kubernetes proxy squid


【解决方案1】:

你可以试试下一个:

1) 通过创建在docker.service.d 级别上修复此问题 /etc/systemd/system/docker.service.d/http-proxy.conf 内容如下:

[Service]
Environment="HTTP_PROXY=http://XXXX:3128"
Environment="HTTPS_PROXY=http://XXXX:3128"

事后别忘了做

systemctl daemon-reload
systemctl restart docker

2)如果你使用自己的镜像,你可以build它并在Dockerfile中指定如下。使用这种方法,只有当前容器会使用您的 squid 代理

ENV http_proxy XXXX:3128
ENV https_proxy XXXX:3128

3)另一种方法是查看/etc/default/docker(适用于ubuntu):

cat /etc/default/docker
...
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/

这样您将为所有容器设置代理,而不是只为选定的容器设置代理

我还找到了一些 github kubernetes-squid solotion。请看一下,但我觉得这不是你需要的,但无论如何..

希望对你有帮助

【讨论】:

  • 我通过在 docker 文件中指定 ENV 尝试了第二个选项,但仍然相同。请求未路由到代理。
  • 您是否尝试过其他选择?也许您从那时起调查了更多细节?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
相关资源
最近更新 更多