ハイブリッドノードのプロキシを設定する - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

ハイブリッドノードのプロキシを設定する

オンプレミス環境でデータセンターまたはエッジ環境から出るトラフィックにプロキシサーバーを使用している場合は、プロキシサーバーを使用するようにオペレーティングシステムや、containerdkubeletkube-proxy を設定する必要があります。Amazon EKS クラスターの作成後に kube-proxy を設定する必要があります。オペレーティングシステムイメージのビルドプロセス中、または各ハイブリッドノードで nodeadm init を実行する前に、オペレーティングシステム、containerd、および kubelet を変更することができます。

ノードレベルの設定

このセクションの設定は、オペレーティングシステムイメージで、または各ハイブリッドノードで nodeadm init を実行する前に、適用する必要があります。

containerd プロキシ設定

containerd は、Kubernetes のデフォルトのコンテナ管理ランタイムです。インターネットアクセスにプロキシを使用している場合は、Kubernetes と Amazon EKS に必要なコンテナイメージをプルできるように containerd を設定する必要があります。

次の内容で、各ハイブリッドノード上の /etc/systemd/system/containerd.service.d ディレクトリに「http-proxy.conf」という名前のファイルを作成します。proxy-domain および port を環境の値で置き換えます。

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

ユーザーデータからの containerd 設定

このファイル用に containerd.service.d ディレクトリを作成する必要があります。systemd を再ロードして設定ファイルを選択すると、再起動しなくても済むようになります。AL2023 では、スクリプトを実行した時点で既にサービスが実行されている可能性があります。その場合は再起動も必要です。

mkdir -p /etc/systemd/system/containerd.service.d echo '[Service]' > /etc/systemd/system/containerd.service.d echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d systemctl daemon-reload systemctl restart containerd

kubelet プロキシ設定

kubelet は、各 Kubernetes ノードで実行される Kubernetes ノードエージェントであり、そのノードで実行されているノードとポッドの管理を担当します。オンプレミス環境でプロキシを使用している場合は、Amazon EKS クラスターのパブリックエンドポイントまたはプライベートエンドポイントと通信できるように kubelet を設定する必要があります。

次の内容で、各ハイブリッドノードの /etc/systemd/system/kubelet.service.d/ ディレクトリに「http-proxy.conf」という名前のファイルを作成します。proxy-domain および port を環境の値で置き換えます。

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

ユーザーデータからの kubelet 設定

このファイル用に kubelet.service.d ディレクトリを作成する必要があります。systemd を再ロードして設定ファイルを選択すると、再起動しなくても済むようになります。AL2023 では、スクリプトを実行した時点で既にサービスが実行されている可能性があります。その場合は再起動も必要です。

mkdir -p /etc/systemd/system/kubelet.service.d echo '[Service]' > /etc/systemd/system/kubelet.service.d echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d systemctl daemon-reload systemctl restart containerd

オペレーティングシステムのプロキシ設定

インターネットアクセスにプロキシを使用している場合は、オペレーティングシステムのパッケージマネージャーからハイブリッドノードの依存関係をプルできるようにオペレーティングシステムを設定する必要があります。

Ubuntu

  1. 次のコマンドでプロキシを使用するように snap を設定します。

    sudo snap set system proxy.https=http://proxy-domain:port sudo snap set system proxy.http=http://proxy-domain:port
  2. apt のプロキシを有効にするには、/etc/apt/ ディレクトリに apt.conf という名前のファイルを作成します。proxy-domain と port を環境の値に置き換えます。

    Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";

Amazon Linux 2023 および Red Hat Enterprise Linux

  1. プロキシを使用するように yum を設定します。環境のプロキシドメイン値とポート値を使用してファイル /etc/yum.conf を作成します。

    proxy=http://proxy-domain:port

クラスター全体の設定

このセクションの設定は、Amazon EKS クラスターを作成した後、および各ハイブリッドノードで nodeadm init を実行する前に適用する必要があります。

kube-proxy のプロキシ設定

Amazon EKS は、ハイブリッドノードがクラスターに参加すると、各ハイブリッドノードに DaemonSet として自動的に kube-proxy をインストールします。kube-proxy は、Amazon EKS クラスターのポッドによってバックアップされるサービス間のルーティングを有効にします。各ホストを設定するために、kube-proxy には Amazon EKS クラスターエンドポイントの DNS 解決が必要です。

  1. 次のコマンドを使用して kube-proxy DaemonSet を編集する

    kubectl -n kube-system edit ds kube-proxy

    これにより、設定されたエディタで kube-proxy DaemonSet 定義が開きます。

  2. HTTP_PROXY および HTTPS_PROXY の環境変数を追加します。NODE_NAME 環境変数は設定に既に存在している必要があります。proxy-domainport を環境の値に置き換えます。

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME) env: - name: HTTP_PROXY value: http://proxy-domain:port - name: HTTPS_PROXY value: http://proxy-domain:port - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName