AWS Fargate - Amazon EKS

AWS Fargate

このトピックでは、Amazon EKS を使用して AWS Fargate で Kubernetes ポッドを実行する方法について説明します。

AWS Fargate は、[コンテナ] に適切なサイズのコンピューティング能力をオンデマンドで提供するテクノロジーです。AWS Fargate を使用すると、コンテナを実行するために仮想マシンのグループをプロビジョニング、設定、スケールする必要がありません。これにより、サーバータイプの選択、ノードグループをスケールするタイミングの決定、クラスターのパッキングの最適化を行う必要がなくなります。Fargate で起動するポッドと、[Fargate プロファイル] でそれを実行する方法は、Amazon EKS クラスターの一部として定義して制御することができます。。

Amazon EKS は、Kubernetes が提供するアップストリームの拡張可能なモデルを使用して AWS により構築されたコントローラーを使用して、Kubernetes と AWS Fargate を統合します。これらのコントローラーは、 Amazon EKS マネージド Kubernetes コントロールプレーンの一部として実行され、ネイティブ Kubernetes ポッドを Fargate にスケジューリングします。Fargate コントローラーには、いくつかの変更と検証アドミッションコントローラーに加えて、デフォルトの Kubernetes スケジューラーとともに実行される新しいスケジューラが含まれています。Fargate で実行する条件を満たすポッドを起動すると、クラスターで実行されている Fargate コントローラーはポッドを認識し、更新し、Fargate にスケジューリングします。

このトピックでは、Fargate で実行されているポッドのさまざまなコンポーネントについて説明し、Amazon EKS で Fargate を使用する際の特別な考慮事項を示します。

AWS Fargate に関する考慮事項

Amazon EKS での Fargate の使用についての考慮事項を以下に示します。

  • Amazon EKS を使用した AWS Fargate は、中国 (北京)、中国 (寧夏)、AWS GovCloud (米国東部)、AWS GovCloud (米国西部) を除くすべての Amazon EKS リージョンで使用できます。

  • Fargate で実行する各ポッドは、独自の分離境界を持ち、基本となるカーネル、CPU リソース、メモリリソース、または Elastic Network Interface を別のポッドと共有しません。

  • Network Load Balancer と Application Load Balancer は、IPターゲットでのみ Fargate で使用できます。詳細については、「ロードバランサー — IP ターゲット」および「Amazon EKS でのアプリケーション負荷分散」を参照してください。

  • Fargate で実行するには、ポッドがスケジューリングされた時点で Fargate プロファイルと一致する必要があります。Fargate プロファイルと一致しないポッドは、Pending として留め置かれる可能性があります。一致する Fargate プロファイルが存在する場合、Fargate に再スケジューリングするために作成した保留中のポッドを削除できます。

  • デーモンセットは Fargate ではサポートされていません。アプリケーションにデーモンが必要な場合は、そのデーモンをポッドのサイドカーコンテナとして実行するように再設定する必要があります。

  • 特権を持つコンテナは Fargate ではサポートされていません。

  • Fargate で実行されているポッドは、HostPort または HostNetwork をポッドマニフェストに指定できません。

  • Fargate ポッドの場合、デフォルトの nofile および nproc のソフトリミットは 1024、ハードリミットは 65535 です。

  • GPU は現在、Fargate では使用できません。

  • Fargate 上で実行されているポッドとともに ポッドのセキュリティグループ を使用することはできません

  • Fargate で実行されているポッドは、プライベートサブネットでのみサポートされています (AWS のサービスへの NAT ゲートウェイアクセスができますが、インターネットゲートウェイへの直接ルーティングはできません)。そのため、クラスターの VPC ではプライベートサブネットを使用できるようにする必要があります。アウトバウンドインターネットアクセスのないクラスターについては、「」を参照してくださいプライベートクラスター

  • Vertical Pod Autoscaler を使用して、Fargate ポッドの CPU とメモリの適切なサイズを最初に設定してから、Horizontal Pod Autoscaler を使用してそれらのポッドをスケールできます。Vertical Pod Autoscaler で、より大きい CPU とメモリの組み合わせを持つ Fargate にポッドを自動的に再デプロイする場合は、正しい機能を確保するため、Vertical Pod Autoscaler のモードを Auto または Recreate に設定します。詳細については、GitHub で Vertical Pod Autoscaler のドキュメントを参照してください。

  • VPC で DNS 解決と DNS ホスト名を有効にする必要があります。詳細については、「VPC の DNS サポートを更新する」を参照してください。

  • Fargate は、他のポッドとリソースを共有することなく、VM 分離環境で各ポッドを実行します。ただし、Kubernetes はシングルテナントオーケストレーターであるため、Fargate はポッドレベルのセキュリティ分離を保証することはできません。セキュリティのために完全に分離する必要がある機密性の高いワークロードまたは信頼できないワークロードは、個別の Amazon EKS クラスターを使用して実行する必要があります。

  • Fargate プロファイルでは、VPC セカンダリ CIDR ブロックからのサブネットの指定がサポートされています。サブネットで使用可能な IP アドレスは、数が限られているため、セカンダリ CIDR ブロックを指定することもできます。結果的に、クラスター内に作成できるポッドの数が制限されます。ポッドに別のサブネットを使用することで、使用可能な IP アドレスの数を増やすことができます。詳細については、「IPv4 CIDR ブロックの VPC への追加」を参照してください。

  • Amazon EC2 インスタンスメタデータサービス (IMDS) は、Fargate ノードにデプロイされたポッドでは使用できません。IAM 認証情報を必要とするポッドを Fargate にデプロイしている場合は、サービスアカウントの IAM ロール を使用してポッドに割り当てます。ポッドが IMDS を通じて利用可能な他の情報 (ポッド がデプロイされているリージョンやアベイラビリティーゾーンなど) にアクセスする必要がある場合は、この情報をポッド仕様にハードコーディングする必要があります。

  • AWS Outposts、AWS Wavelength、または AWS Local Zones に Fargate ポッドをデプロイすることはできません。