AWS Fargate を使用してコンピューティング管理を簡素化する - アマゾン EKS

このページの改善にご協力ください

本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

AWS Fargate を使用してコンピューティング管理を簡素化する

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

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

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

AWS Fargate 考慮事項

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

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

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

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

  • Fargate で実行するには、ポッドがスケジューリングされた時点で Fargate プロファイルと一致する必要があります。Fargate プロファイルに一致しない Pod は Pending としてスタックする可能性があります。一致する Fargate プロファイルが存在する場合、Fargate に再スケジューリングするために作成した保留中の 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 リージョンまたはアベイラビリティーゾーンが含まれます。

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

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

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

  • Fargate 上で実行される Pod は、ドライバーの手動インストールステップなしで、Amazon EFS ファイルシステムを自動的にマウントします。Fargate ノードでは動的永続ボリュームプロビジョニングを使用できませんが、静的プロビジョニングを使用することはできます。

  • Amazon EKS は Fargate Spot をサポートしていません。

  • Amazon EBS ボリュームを Fargate Pods にマウントすることはできません。

  • Amazon EBS CSI コントローラーは Fargate ノードで実行できますが、Amazon EBS CSI ノード DaemonSet は Amazon EC2 インスタンスでのみ実行できます。

  • Kubernetes ジョブが Completed または Failed とマークされた後も、Job が作成した Pods は通常存在し続けます。この動作によりログと結果を表示できますが、Fargate を使用する場合、その後 Job をクリーンアップしないとコストが発生します。

    Job が完了または失敗した後に、関連する Pods を自動的に削除するには、有効期限 (TTL) コントローラを使用して期間を指定できます。次の例では、Job マニフェストで .spec.ttlSecondsAfterFinished を指定する方法を示しています。

    apiVersion: batch/v1 kind: Job metadata: name: busybox spec: template: spec: containers: - name: busybox image: busybox command: ["/bin/sh", "-c", "sleep 10"] restartPolicy: Never ttlSecondsAfterFinished: 60 # <-- TTL controller

Fargate 比較テーブル

条件 AWS Fargate

AWS Outposts にデプロイ可能

いいえ

AWS Local Zone にデプロイ可能

いいえ

Windows を必要とするコンテナを実行できます

いいえ

Linux を必要とするコンテナを実行できます

あり

Inferentia チップを必要とするワークロードを実行可能

いいえ

GPU を必要とするワークロードを実行可能

いいえ

Arm プロセッサを必要とするワークロードを実行可能

いいえ

AWS Bottlerocket を実行可能

いいえ

ポッドは、カーネルランタイム環境を他の Pods ポッドと共有します。

いいえ - 各 Pod には専用のカーネルがあります。

ポッドは、CPU、メモリ、ストレージ、およびネットワークリソースを他の Pods のポッドと共有します。

いいえ - 各 Pod には専用のリソースがあり、リソースの使用率を最大化するために個別にサイズ設定できます。

ポッドは、Pod 仕様でリクエストされているよりも多くのハードウェアとメモリを使用できます

いいえ - Pod は、より大きな vCPU とメモリ設定を使用して再展開できます。

Amazon EC2 インスタンスをデプロイおよび管理する必要がある

いいえ

Amazon EC2 インスタンスのオペレーティングシステムの保護、保守、パッチ適用を行う必要がある

いいえ

ノードをデプロイする時に、追加の kubelet 引数 などのブートストラップ引数を提供できます。

いいえ

ノードに割り当てられた IP アドレスとは異なる CIDR ブロックから、IP アドレスを Pods に割り当てることができます。

いいえ

ノードに SSH 接続可能

いいえ – SSH 接続を行うノードホストオペレーティングシステムはありません。

独自のカスタム AMI をノードにデプロイ可能

いいえ

独自のカスタム CNI をノードにデプロイ可能

いいえ

ノード AMI を自分で更新する必要がある

いいえ

ノードの Kubernetes バージョンを自分で更新する必要があります

いいえ: ノードを管理しません。

Pods で Amazon EBS ストレージが使用可能

いいえ

Pods で Amazon EFS ストレージが使用可能

あり

Pods で Amazon FSx for Lustre ストレージが使用可能

いいえ

Network Load Balancer をサービスに使用可能

はい、「Network Load Balancer を作成する」を使用する場合

ポッドはパブリックサブネットで実行可能

いいえ

それぞれの Pods に、異なる VPC セキュリティグループが割り当て可能

あり

Kubernetes DaemonSets を実行可能

いいえ

Pod マニフェストで HostPort および HostNetwork をサポートします

いいえ

AWS が利用可能なリージョン

一部の Amazon EKS 対応リージョン

Amazon EC2 専有ホストでコンテナを実行できます

いいえ

料金

個々のFargate メモリとCPU構成のコスト。各 Pod には、独自のコストがあります。詳細については、「AWS Fargate の料金」を参照してください。