web-dev-qa-db-ja.com

kubernetes(v1.11.2)クラスターのプロキシ設定(http_proxy変数)を設定する方法

組織のポリシーにより、どういうわけかインターネット接続ができないKubernetesクラスターをセットアップしました。今、私はインターネットを介して通信する必要があるいくつかのサービスがあります。これを解決するために、K8sクラスターの外部にあるフォワードプロキシ(Squid)をセットアップしました。 K8sクラスターのすべてのノードは、フォワードプロキシを使用して「google.com」にアクセスできます。しかし、そのプロキシを介してポッドを通信させることができません。

すべてのマスターノードとワーカーノードで次の変数を設定しました。

export http_proxy="http://10.x.x.x:3128"
export https_proxy="https://10.x.x.x:3128"

マスターノードとワーカーノードからgoogle.comをカールできます。しかし、コンテナにアタッチすると、変数http_proxyとhttps_proxyがないことに気づきました。そしてそれは成功したカールを行うことができません。

私のポッドとサービスネットワークは、私のVM networkとは異なります

pod-network-cidr=192.167.0.0/16 
service-cidr 192.168.0.0/16 

そして私のVMネットワークは次のようなものです:

Master  -> 10.2.2.40
Worker1 -> 10.2.2.41
Worker2 -> 10.2.2.42
Worker3 -> 10.2.2.43

そして私のフォワードプロキシは

Forward Proxy: 10.5.2.30

私はkubernetesバージョンv1.11.2を使用しています。すべてのポッドとサービスに対してそれを有効にするために、kubernetesクラスターのhttp_proxy設定をどこに配置する必要があるかなど、ここで何か助けはありますか?

3
Meta-Coder

したがって、特定のコンテナーのプロキシーを設定するには、Dockerfileでenv変数を設定することがわかりました。

ENV HTTP_PROXY http://10.x.x.x:PORT
3
Meta-Coder

Dockerサービスには、systemd設定ファイルを使用します。

ファイルを作成します。

/etc/systemd/system/docker.service.d/http-proxy.conf

内容:

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

(NO_PROXY変数を含めることもできます)

Systemctlをリロードしてdockerサービスを再起動する必要があります:

systemctl daemon-reload
systemctl restart docker

コンテナーがプロキシーに接続できるようにするには、mk_staが言ったように/etc/default/dockerまたは/etc/sysconfig/dockerを使用します。

2
saulR

あなたは付け加えられます http_proxyネストされたポッドコンテナからターゲットプロキシサーバーを介してパケットを転送するために、Dockerマシンに設定します。

Ubuntuベースのオペレーティングシステムの場合:

追加 export http_proxy='http://<Host>:<port>'ファイルに記録/etc/default/docker

Centosベースのオペレーティングシステムの場合:

追加 export http_proxy='http://<Host>:<port>'ファイルに記録/etc/sysconfig/docker

その後、Dockerサービスを再起動します。

2
mk_sta