View a markdown version of this page

Pod のアウトバウンドインターネットアクセスを有効にする - Amazon EKS

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

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

Pod のアウトバウンドインターネットアクセスを有効にする

適用対象: Linux IPv4 Fargate ノード、Amazon EC2 インスタンスを持つ Linux ノード

IPv6 ファミリーを使用してクラスターをデプロイした場合、このトピックの情報はクラスターに適用されません。IPv6 アドレスがネットワーク変換されないからです。クラスターでの IPv6 使用の詳細については「クラスター、Pod、サービスに対する IPv6 アドレスの説明」を参照してください。

デフォルトでは、クラスター内の各 Pod に、Pod がデプロイされた VPC に関連付けられた Classless Inter-Domain Routing (CIDR) ブロックから、プライベート IPv4 アドレスが割り当てられます。同じ VPC 内の Pod は、これらのプライベート IP アドレスをエンドポイントとして使用して相互に通信します。VPC に関連付けられている CIDR ブロック外の IPv4 アドレスと Pod が通信する場合、(LinuxWindows 両用の) Amazon VPC CNI プラグインが Pod の IPv4 アドレスを、Pod が実行されているノードのプライマリ Elastic Network Interface のプライマリプライベート IPv4 アドレスに変換します (デフォルトでは *)。

注記

Windows ノードについては、他にも考慮すべき事項があります。デフォルトでは、Windows の VPC CNI プラグインは、同じ VPC 内の宛先へのトラフィックを SNAT から除外するネットワーク設定で定義されます。つまり、内部 VPC 通信では SNAT が無効になっており、Pod に割り当てられた IP アドレスは VPC 内でルーティング可能です。ただし、VPC 外の宛先へのトラフィックでは、送信元 Pod IP がインスタンスの ENI のプライマリ IP アドレスに SNAT されます。Windows のこのデフォルト設定により、Pod はホストインスタンスと同じ方法で VPC 外部のネットワークにアクセスできます。

この動作によって、次の現象が起こります。

ご使用の環境で次のいずれかが当てはまる場合は、次のコマンドを使用してデフォルト設定を変更してください。

  • VPC ピアリングトランジット VPC、または AWS Direct Connect を使用してクラスター VPC に接続されているネットワークまたは VPC 内に、IPv4 アドレスを使用して Pod との通信を開始する必要があるリソースがあり、プラグインのバージョンが 1.8.0 よりも前である。

  • トラフィックがノードから離れるときに Pod の送信元 IP アドレスが保持され、ノードの代わりに NAT ゲートウェイ によって SNAT が実行されるようにします。例えば、ネットワークアプライアンスやログが Pod の IP アドレスを観察できるようにするためです。Pod が送信元のトラフィックはインターネットゲートウェイ経由でルーティングできないため、ノードは NAT ゲートウェイへのルートを持つプライベートサブネットにある必要があります。

kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true
注記

AWS_VPC_K8S_CNI_EXTERNALSNAT および AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS CNI の設定変数は Windows ノードに適用されません。SNAT の無効化は Windows でサポートされていません。IPv4 CIDR のリストを SNAT から除外する場合は、Windows ブートストラップスクリプトで ExcludedSnatCIDRs パラメータを指定して定義できます。このパラメータの使用に関する詳細については、「ブートストラップスクリプトの設定パラメータ」を参照してください。

ホストネットワーキング

* Pod の仕様に hostNetwork=true が含まれている場合 (デフォルトは false)、その IP アドレスは別のアドレスに変換されません。これは、デフォルトでクラスターで実行される kube-proxy および Amazon VPC CNI plugin for Kubernetes Pod の場合に当てはまります。これらの Pod の場合、IP アドレスはノードのプライマリ IP アドレスと同じであるため、Pod の IP アドレスは変換されません。Pod の hostNetwork 設定の詳細については、Kubernetes API リファレンスの「PodSpec v1 core」を参照してください。