Amazon EKS クラスターのサブネットを設定するにはどうすればよいですか?

最終更新日: 2021 年 10 月 4 日

Amazon Elastic Kubernetes Service (Amazon EKS) クラスターと連携するようにサブネットを設定したいと考えています。

簡単な説明

次の設定オプションのいずれかを選択します。

  • ワーカーノードからアウトバウンドおよびインバウンドのインターネットアクセスを取得するには、パブリックサブネットを設定するのセクションの手順を完了します。
  • ワーカーノードからアウトバウンドインターネットアクセスのみを取得するには、アウトバウンドインターネットアクセスを備えたプライベートサブネットを設定するのセクションの手順を完了します。
  • ワーカーノードからアウトバウンドおよびインバウンドのインターネットアクセスの両方を制限するには、インターネットにアクセスできないプライベートサブネットを設定するのセクションの手順を完了します。例えば、プライベート Amazon EKS クラスターのためにこの解決方法を選択します。

解決方法

パブリックサブネットを設定する

Amazon EKS クラスターのサブネットを作成するときは、以下の点を考慮してください。

1.    インターネットゲートウェイを介して送信先 0.0.0.0/0 にトラフィックをルーティングするように設定されたルートテーブルにサブネットを関連付けます。例: igw-xxxxxxxx

2.    サブネットのために自動割り当てパブリック IPV4 アドレス属性を有効にします。

3.    サブネットのタグ付けを使用して、ロードバランサーのデプロイを制限するのセクションの手順を完了します。

アウトバウンドインターネットアクセスを備えたプライベートサブネットを設定する

Amazon EKS クラスターのサブネットを作成するときは、以下の点を考慮してください。

1.    NAT ゲートウェイにトラフィックをルーティングするように設定されたルートテーブルにサブネットを関連付けて、インターネットへのアウトバウンド接続のみを許可します。

2.    サブネットのために自動割り当てパブリック IPv4 アドレスが有効になっていないことを確認します。

3.    サブネットのタグ付けを使用して、ロードバランサーのデプロイを制限するのセクションの手順を完了します。

インターネットにアクセスできないプライベートサブネットを設定する

1.    ワーカーノードへのインターネットアクセスをブロックするには、サブネットがルートテーブルに関連付けられていないことを確認します。このルートテーブルは、NAT ゲートウェイまたはインターネットゲートウェイのいずれかにトラフィックをルーティングするように設定されたルートテーブルです。

2.    自動割り当てパブリック IPv4 アドレスが有効になっていないことを確認します。

3.    VPC 用に Amazon Virtual Private Cloud (Amazon VPC) エンドポイントを作成します。ワーカーノードが Amazon EKS クラスターに参加するには、次の VPC エンドポイントが必要です。

com.amazonaws.your_region.ec2
com.amazonaws.your_region.ecr.api
com.amazonaws.your_region.ecr.dkr
com.amazonaws.your_region.s3

注: your-region をご利用の AWS リージョンに置き換えてください。

4.    (必要な場合) アプリケーションの要件に基づいて、追加の VPC エンドポイントを作成します。以下の例をご覧ください。

Amazon CloudWatch Logs の場合:

com.amazonaws.your_region.logs

Kubernetes Cluster Autoscaler またはサービスアカウントの AWS Identity and Access Management (IAM) ロールの場合:

com.amazonaws.your_region.sts

Application Load Balancer の場合:

com.amazonaws.your_region.elasticloadbalancing

Kubernetes Cluster Autoscaler の場合:

com.amazonaws.your_region.autoscaling

AWS App Mesh の場合:

com.amazonaws.your_region.appmesh-envoy-management

AWS X-Ray の場合:

com.amazonaws.your_region.xray

注: your-region をご利用の AWS リージョンに置き換えてください。

5.    サブネットのタグ付けを使用して、ロードバランサーのデプロイを制限するのセクションの手順を完了します。

サブネットのタグ付けを使用して、ロードバランサーのデプロイを制限する

サブネットのタグ付けは、外部または内部のロードバランサーを作成するためにどのサブネットを使用できるかを AWS Load Balancer Controller に知らせます。

パブリックサブネットの場合:

VPC の特定のパブリックサブネットで AWS Load Balancer Controller を使用して外部ロードバランサーのデプロイを制限するには、そのサブネットに次のようにタグ付けします。

Key - kubernetes.io/role/elb
Value - 1

プライベートサブネットの場合:

特定のプライベートサブネットで AWS Load Balancer Controller を使用して内部ロードバランサーのデプロイを制限するには、そのサブネットに次のようにタグ付けします。

Key - kubernetes.io/role/internal-elb
Value - 1

注: サブネットで実行できるポッドの数は、サブネットで使用可能な空き IP アドレスの数によって異なります。クラスターの作成時に指定したサブネットに、Amazon EKS によって作成されたネットワークインターフェイスのために使用可能な IP アドレスが十分にあることを確認します。Amazon EKS によって作成されたネットワークインターフェイスのために小さな (つまり /28) 専用サブネットを作成するのがベストプラクティスです。その後、これらのサブネットをクラスター作成の一部としてのみ指定する必要があります。ノードやロードバランサーなどの他のリソースを、クラスターの作成時に指定したサブネットとは別のサブネットで起動します。