このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
クラスター、Pod、サービスに対する IPv6 アドレスの説明
適用対象: Amazon EC2 インスタンスを持つ Pod と Fargate Pod
Kubernetes のデフォルトでは、IPv4 アドレスが Pod とサービスに割り当てられます。Pod とサービスに IPv4 アドレスを割り当てる代わりに、IPv6 アドレスを割り当てるようにクラスターを設定できます。Amazon EKS は、Kubernetes がサポートしていても、デュアルスタックのポッドまたはサービスをサポートしません。つまり、Pod とサービスに IPv4 アドレスと IPv6 アドレスの両方を割り当てることはできません。
そのクラスターに使用する IP ファミリーは、クラスターの作成時に選択します。クラスターの作成後は、ファミリーを変更できません。
Amazon EKS IPv6 クラスターをデプロイするチュートリアルについては、「Amazon EKS IPv6 クラスターとマネージド Amazon Linux ノードをデプロイする」を参照してください。
この機能を使用する際の考慮事項を次に示します。
IPv6 の機能のサポート
-
Windows サポートなし: Windows の Pod とサービスはサポートされていません。
-
Nitro ベースの EC2 ノードが必要:
IPv6は、AWS Nitro ベースの Amazon EC2 または Fargate ノードでのみ使用が可能です。 -
EC2 ノードおよび Fargate ノードがサポートされる:
IPv6は、Amazon EC2 ノードと Fargate ノードで セキュリティグループを個別の Pod に割り当てる とともに使用できます。 -
Outposts はサポートされない:
IPv6は AWS Outposts を使用して Amazon EKS をオンプレミスにデプロイする とともに使用できません。 -
FSx for Lustre はサポートされない: Amazon FSx for Lustre で高性能なアプリケーションストレージを使用する はサポートされていません。
-
カスタムネットワーキングはサポートされない: IP アドレスの枯渇を緩和するために、これまで使用していた カスタムネットワーキングを使用して代替サブネットに Pod をデプロイする の代わりとして、
IPv6を使用することができます。IPv6では、カスタムネットワーキングを使用することはできません。クラスターにおいて、ネットワークの分離用としてカスタムネットワーキングを使用する場合は、引き続き、IPv4ファミリーによるカスタムネットワーキングを使用する必要があります。
IP アドレスの割り当て
-
Kubernetes サービス: Kubernetes サービスには
IPv6アドレスのみが割り当てられます。これらには、IPv4 アドレスは割り当てられません。 -
ポッド: ポッドには IPv6 アドレスとホストローカル IPv4 アドレスが割り当てられます。ホストローカル IPv4 アドレスは、VPC CNI と連鎖されたホストローカル CNI プラグインを使用して割り当てられ、そのアドレスは Kubernetes コントロールプレーンに報告されません。これは、ポッドが別の Amazon VPC またはインターネット内の外部 IPv4 リソースと通信する必要がある場合にのみ使用されます。ホストローカル IPv4 アドレスは、ワーカーノードのプライマリ ENI のプライマリ IPv4 アドレスに (VPC CNI によって) SNAT されます。
-
ポッドとサービス: ポッドおよびサービスは
IPv4アドレスではなく、IPv6アドレスのみを受け取ります。ポッドが外部IPv4エンドポイントと通信する必要がある場合、ノード自体で NAT が使用されます。この組み込み NAT 機能により、DNS64 および NAT64 が不要になります。パブリックインターネットアクセスを必要とするトラフィックの場合、ポッドのトラフィックはパブリック IP アドレスに変換されたソースネットワークアドレスになります。 -
ルーティングアドレス: ポッドが VPC の外部で通信する場合、元の
IPv6アドレスは保持されます (ノードのIPv6アドレスに変換されない)。このトラフィックは、インターネットゲートウェイまたは Egress-Only のインターネットゲートウェイを介して直接ルーティングされます。 -
ノード: すべてのノードには、
IPv4とIPv6のアドレスが割り当てられています。 -
Fargate ポッド: 各 Fargate Pod は、デプロイ先のサブネット用に指定された CIDR から、
IPv6アドレスを受け取ります。Fargate Pod を実行するための基盤ハードウェアユニットは、そのユニットがデプロイされているサブネットに割り当てられている CIDR から、一意のIPv4およびIPv6アドレスを取得します。
EKS で IPv6 を使用する方法
-
新しいクラスターを作成する: 新しいクラスターを作成し、そのクラスターで
IPv6ファミリーの使用を指定する必要があります。これより前のバージョンからクラスターを更新して、IPv6ファミリーを有効化することはできません。新しいクラスターを作成する手順については、「考慮事項」を参照してください。 -
最新の VPC CNI を使用する: Amazon VPC CNI バージョン
1.10.1以降をデプロイします。このバージョン以降がデフォルトでデプロイされます。アドオンのデプロイ後は、クラスター内のすべてのノードグループ内にあるすべてのノードを削除しない限り、Amazon VPC CNI アドオンを1.10.1より前のバージョンにダウングレードすることはできません。 -
IPv6用の VPC CNI を設定する: Amazon EC2 ノードを使用する場合は、IP プレフィックスの委任とIPv6を使用して Amazon VPC CNI アドオンを設定する必要があります。クラスターの作成時にIPv6ファミリーを選択した場合は、バージョン1.10.1のアドオンが、この設定のデフォルトになります。これは、セルフマネージド型のアドオン、および Amazon EKS アドオンの両方に当てはまります。IP プレフィックス委任の詳細については、「プレフィックスを使用して Amazon EKS ノードに割り当てる IP アドレスを増やす」を参照してください。 -
IPv4アドレスとIPv6アドレスを設定する: クラスターを作成する際に指定する VPC とサブネットには、それらに割り当てられたIPv6CIDR ブロックが必要です。同時に、IPv4CIDR ブロックも割り当てられている必要があります。これは、IPv6のみを使用する場合でも、VPC が機能するにはIPv4CIDR ブロックが必要になるためです。詳細については、「Amazon VPC ユーザーガイド」の「IPv6 CIDR ブロックと VPC の関連付け」を参照してください。 -
IPv6 アドレスをノードに自動割り当てする: ノードを作成する際は、
IPv6アドレスを自動割り当てするように設定されたサブネットを指定する必要があります。指定していない場合、ノードをデプロイできません。自動割り当ての設定はデフォルトで無効になっています。 詳細については、「Amazon VPC ユーザーガイド」の「サブネットのパブリック IPv6 アドレス属性を変更する」を参照してください。 -
ルートテーブルを設定して
IPv6を使用する: サブネットに割り当てられるルートテーブルには、IPv6アドレス用のルートが必要です。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。 -
IPv6のセキュリティグループを設定する: セキュリティグループはIPv6アドレスを許可する必要があります。詳細については、「Amazon VPC ユーザーガイド」の「既存の VPC を IPv4 から IPv6 に移行する」を参照してください。 -
ロードバランサーを設定する: AWS Load Balancer Controller のバージョン
2.3.1以降を使用して、「Application Load Balancer を使用してアプリケーションと HTTP トラフィックをルーティングする」を使用した HTTP アプリケーションのロードバランシング、または、「Network Load Balancer を使用して TCP および UDP トラフィックをルーティングする」を使用したネットワークトラフィックのIPv6Pod へのロードバランシングを行います。いずれの場合もインスタンスモードではなく IP モードを使用してください。詳細については、「AWS Load Balancer Controller を使用してインターネットトラフィックをルーティングする」を参照してください。 -
IPv6IAM ポリシーを追加する: ノード IAM または CNI IAM ロールには、IPv6のIAM ポリシーをアタッチする必要があります。上記 2 つの中では、CNI IAM ロールへのアタッチが推奨されます。詳細については、「IPv6 ファミリーを使用するクラスター用に IAM ポリシーを作成します。」および「ステップ 1: Amazon VPC CNI plugin for Kubernetes の IAM ロールを作成する」を参照してください。 -
すべてのコンポーネントを評価する: アプリケーション、Amazon EKS アドオン、および、
IPv6クラスターのデプロイ前に統合した AWS サービスに関しては、包括的な評価を実施します。これにより、IPv6を使用した場合も、すべてが想定どおりに動作することを保証できます。 -
BootstrapArgumentsセルフマネージドノードグループを追加する:IPv6ファミリーを使用するクラスターでセルフマネージドノードグループを作成する場合、ユーザーデータには、ノードの起動時に実行される bootstrap.shファイルの次の BootstrapArgumentsが含まれている必要があります。your-cidrをクラスターの VPC のIPv6CIDR 範囲に置き換えます。--ip-family ipv6 --service-ipv6-cidr your-cidrクラスターの
IPv6CIDR範囲がわからない場合は、次のコマンドで確認できます (AWS CLI バージョン2.4.9以降が必要です)。aws eks describe-cluster --name my-cluster --query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text