AWS Fargate - Amazon EKS

AWS Fargate

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

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

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

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

AWS Fargate に関する考慮事項

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

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

  • Fargate で実行される各 pod には、独自の分離境界があります。基本となるカーネル、CPU リソース、メモリリソース、または Elastic Network Interface を別の pod と共有しません。

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

  • Fargate 公開サービスは、ターゲットタイプの IP モードでのみ実行され、ノード IP モードでは実行されません。マネージド型ノードで実行されているサービスと Fargate で実行されているサービスからの接続を確認するためのおすすめの方法は、サービス名を使用して接続することです。

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

  • 1.18 以降のクラスターの一部である Fargate で実行している pods でのみ、pods のセキュリティグループ を使用できます。

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

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

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

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

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

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

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

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

  • Amazon EKS Fargate は、仮想マシン (VM) 内の各ポッドを分離することで、Kubernetes アプリケーションの多層防御を追加します。この VM 境界は、コンテナエスケープが発生した場合に他のポッドが使用するホストベースのリソースへのアクセスを防ぎます。これは、コンテナ化されたアプリケーションを攻撃し、コンテナ外のリソースにアクセスする一般的な方法です。

    Amazon EKS を使用しても、責任共有モデルに基づくお客様の責任は変わりません。クラスターのセキュリティとガバナンスのコントロールの設定について、慎重に検討する必要があります。アプリケーションを分離する最も安全な方法は、常に別のクラスターで実行することです。

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

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

  • Fargate pods は AWS Outposts、AWS Wavelength または AWS の Local Zones にデプロイできません。

  • Amazon EKS は定期的に AWS Fargate pods にパッチを適用して安全に保つ必要があります。影響を軽減する方法で更新を試みますが、ポッドのエビクションが正常に行われなかった場合、pods を削除しなければならない場合があります。中断を最小限に抑えるために行えるアクションがいくつかあります。詳細については、「Fargate pod のパッチ適用」を参照してください。

  • Amazon VPC CNI plugin for Amazon EKS は、Fargate ノードにインストールされています。互換性のある代替 CNI プラグイン を Fargate ノードで使用することはできません。