クラスター、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 ファミリーは、クラスターの作成時に選択します。クラスターの作成後は、ファミリーを変更できません。
Amazon EKS IPv6
クラスターをデプロイするチュートリアルについては、「Amazon EKS IPv6 クラスターとマネージド Amazon Linux ノードをデプロイする」を参照してください。
この機能を使用する際の考慮事項を次に示します。
IPv6
の機能のサポート
-
Windows サポートなし: Windows Pods および services はサポートされていません。
-
Nitro ベースの EC2 ノードが必要:
IPv6
は、AWS Nitro ベースの Amazon EC2 または Fargate ノードでのみ使用が可能です。 -
EC2 ノードおよび Fargate ノードがサポートされる:
IPv6
は、Amazon EC2 ノードと Fargate ノードで 個々の pods にセキュリティグループを割り当てる とともに使用できます。 -
Outposts はサポートされない:
IPv6
は AWS Outposts を使用して Amazon EKS をオンプレミスにデプロイする とともに使用できません。 -
FSx for Lustre はサポートされない: FSx for Lustre を使用して高性能アプリケーションを保存する はサポートされていません。
-
インスタンスメタデータサービスはサポートされない: Amazon EC2 インスタンスメタデータサービスの
IPv6
エンドポイントの使用は、Amazon EKS ではサポートされていません。 -
カスタムネットワーキングはサポートされない: IP アドレスの枯渇を緩和するために、これまで使用していた カスタムネットワーキングを使用して代替サブネットにpodsをデプロイする の代わりとして、
IPv6
を使用することができます。IPv6
では、カスタムネットワーキングを使用することはできません。クラスターにおいて、ネットワークの分離用としてカスタムネットワーキングを使用する場合は、引き続き、IPv4
ファミリーによるカスタムネットワーキングを使用する必要があります。
IP アドレスの割り当て
-
Kubernetes サービス: 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
アドレスに変換されたものではありません。このルーティングは、インターネットゲートウェイ、または送信専用インターネットゲートウェイを使用して行われます。 -
ノード: すべてのノードには、
IPv4
とIPv6
のアドレスが割り当てられています。 -
Fargate Pods : 各 Fargate Pod は、デプロイ先のサブネット用に指定された CIDR から、
IPv6
アドレスを受け取ります。Fargate Pods を実行するための基盤ハードウェアユニットは、そのユニットがデプロイされているサブネットに割り当てられている 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 とサブネットには、それらに割り当てられたIPv6
CIDR ブロックが必要です。同時に、IPv4
CIDR ブロックも割り当てられている必要があります。これは、IPv6
のみを使用する場合でも、VPC が機能するにはIPv4
CIDR ブロックが必要になるためです。詳細については、「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 コントローラーのバージョン
2.3.1
以降を使用して、 Application Load Balancer を使用してアプリケーションと HTTP トラフィックをルーティングする を使った HTTP アプリケーションをロードバランシング、または、Network Load Balancer を使用して TCP および UDP トラフィックをルーティングする を使ったネットワークトラフィックのIPv6
Pods へのロードバランシングを行います。いずれの場合もインスタンスモードではなく IP モードを使用してください。詳細については、「AWS Load Balancer Controller を使用してインターネットトラフィックをルーティングする」を参照してください。 -
IPv6
IAM ポリシーを追加する: ノード 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 の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