クラスター、pods、サービスに IPv6 アドレスを割り当てる - Amazon EKS

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

本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

クラスター、pods、サービスに IPv6 アドレスを割り当てる

適用対象: Amazon EC2 インスタンスと Fargate Podsを持つPods

デフォルトでは、Kubernetes は IPv4 アドレスを Pods と services に割り当てます。Pods と services に IPv4 アドレスを割り当てる代わりに、IPv6 アドレスを割り当てるようにクラスターを設定できます。Amazon EKS は、Kubernetes がバージョン 1.23 以降でサポートしていても、デュアルスタックの Pods または services をサポートしません。つまり、IPv4 アドレスと IPv6 アドレスの両方を Pods と services に割り当てることはできません。

そのクラスターに使用する IP ファミリーは、クラスターの作成時に選択します。クラスターの作成後は、ファミリーを変更できません。

考慮事項

この機能を使用する際の考慮事項を次に示します。

  • 新しいクラスターを作成し、そのクラスターで IPv6 ファミリーの使用を指定する必要があります。これより前のバージョンからクラスターを更新して、IPv6 ファミリーを有効化することはできません。新しいクラスターを作成する手順については、「考慮事項 」を参照してください。

  • クラスターにデプロイする Amazon VPC CNI アドオンには、バージョン 1.10.1 以降を使用する必要があります。このバージョン以降がデフォルトでデプロイされます。アドオンのデプロイ後は、クラスター内のすべてのノードグループ内にあるすべてのノードを削除しない限り、Amazon VPC CNI アドオンを 1.10.1 より前のバージョンにダウングレードすることはできません。

  • Windows Pods および services はサポートされていません。

  • Amazon EC2 ノードを使用する場合は、IP プレフィックスの委任と IPv6 を使用して Amazon VPC CNI アドオンを設定する必要があります。クラスターの作成時に IPv6 ファミリーを選択した場合は、バージョン 1.10.1 のアドオンが、この設定のデフォルトになります。これは、セルフマネージド型のアドオン、および Amazon EKS アドオンの両方に当てはまります。IP プレフィックス委任の詳細については、「プレフィックスを使用して Amazon EKS ノードに割り当てる IP アドレスを増やす」を参照してください。

  • クラスターを作成する際に指定する VPC とサブネットには、それらに割り当てられた IPv6 CIDR ブロックが必要です。同時に、IPv4 CIDR ブロックも割り当てられている必要があります。これは、IPv6 のみを使用する場合でも、VPC が機能するには IPv4 CIDR ブロックが必要になるためです。詳細については、「Amazon VPC ユーザーガイド」の「IPv6 CIDR ブロックと VPC の関連付け」を参照してください。

  • ノードを作成する際は、IPv6 アドレスを自動割り当てするように設定されたサブネットを指定する必要があります。指定していない場合、ノードをデプロイできません。自動割り当ての設定はデフォルトで無効になっています。 詳細については、「Amazon VPC ユーザーガイド」の「Modify the IPv6 addressing attribute for your subnet」(サブネットの アドレス属性を変更する) を参照してください。

  • サブネットに割り当てられるルートテーブルには、IPv6 アドレス用のルートが必要です。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。

  • セキュリティグループでは IPv6 アドレスの使用を許可する必要があります。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。

  • IPv6 は、AWS Nitro ベースの Amazon EC2 または Fargate ノードでのみ使用が可能です。

  • IPv6 は、Amazon EC2 ノードと Fargate ノードで 個々の pods にセキュリティグループを割り当てる とともに使用できます。

  • IP アドレスの枯渇を緩和するために、これまで使用していたカスタムネットワーキングの代わりとして、IPv6 を使用することができます。IPv6 では、カスタムネットワーキングを使用することはできません。クラスターにおいて、ネットワークの分離用としてカスタムネットワーキングを使用する場合は、引き続き、IPv4 ファミリーによるカスタムネットワーキングを使用する必要があります。

  • AWS OutpostsIPv6 を使用することはできません。

  • Kubernetes サービスには IPv6 アドレスのみが割り当てられます。これらには、IPv4 アドレスは割り当てられません。

  • ポッドには IPv6 アドレスとホストローカル IPv4 アドレスが割り当てられます。ホストローカル IPv4 アドレスは、VPC CNI と連鎖されたホストローカル CNI プラグインを使用して割り当てられ、そのアドレスは Kubernetes コントロールプレーンに報告されません。これは、ポッドが別の Amazon VPC またはインターネット内の外部 IPv4 リソースと通信する必要がある場合にのみ使用されます。ホストローカル IPv4 アドレスは、ワーカーノードのプライマリ ENI のプライマリ IPv4 アドレスに (VPC CNI によって) SNAT されます。

  • Pods および services には、IPv6 アドレスのみが割り当てられます。これらには、IPv4 アドレスは割り当てられません。Pods は、インスタンス自体の NAT を介して IPv4 エンドポイントとの通信が可能なため、DNS64 および NAT64 は必要となりません。トラフィックがパブリック IP アドレスを必要とする場合、そのトラフィックは、送信元ネットワークアドレスとしてパブリック IP に変換されます。

  • VPC の外部と通信する際の、送信元 Pod の IPv6 アドレスは、送信元のネットワークアドレスがノードの IPv6 アドレスに変換されたものではありません。このルーティングは、インターネットゲートウェイ、または送信専用インターネットゲートウェイを使用して行われます。

  • すべてのノードには、IPv4IPv6 のアドレスが割り当てられています。

  • FSx for Lustre を使用して高性能アプリケーションを保存する はサポートされていません。

  • IP モードでは、アプリケーションまたはネットワークからの IPv6 Pods へのトラフィックを負荷分散するために、バージョン 2.3.1 以降の AWS Load Balancer Controller が使用できますが、インスタンスモードでは使用できません。詳細については、「AWS Load Balancer Controller を使用してインターネットトラフィックをルーティングする」を参照してください。

  • ノード IAM または CNI IAM のロールには、IPv6 のIAM ポリシーをアタッチする必要があります。上記 2 つの中では、CNI IAM ロールへのアタッチが推奨されます。詳細については、IPv6 ファミリーを使用するクラスター用に IAM ポリシーを作成します。およびステップ 1: Amazon VPC CNI plugin for Kubernetes IAM ロールを作成するを参照してください。

  • 各 Fargate Pod は、デプロイ先のサブネット用に指定された CIDR から、IPv6 アドレスを受け取ります。Fargate Pods を実行するための基盤ハードウェアユニットは、そのユニットがデプロイされているサブネットに割り当てられている CIDR から、一意の IPv4 および IPv6 アドレスを取得します。

  • アプリケーション、Amazon EKS アドオン、および、IPv6 クラスターのデプロイ前に統合した AWS のサービスに関しては、包括的な評価を実施することをお勧めします。これにより、IPv6 を使用した場合も、すべてが想定どおりに動作することを保証できます。

  • Amazon EC2 インスタンスメタデータサービスIPv6 エンドポイントの使用は、Amazon EKS ではサポートされていません。

  • IPv6 ファミリーを使用するクラスターでセルフマネージドノードグループを作成する場合、ユーザーデータには、ノードの起動時に実行される bootstrap.sh ファイルの次の BootstrapArguments が含まれている必要があります。your-cidr をクラスターの VPC の IPv6 CIDR 範囲に置き換えます。

    --ip-family ipv6 --service-ipv6-cidr your-cidr

    クラスターの IPv6 CIDR 範囲がわからない場合は、次のコマンドで確認できます (AWS CLI バージョン 2.4.9 以降が必要です)。

    aws eks describe-cluster --name my-cluster --query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text