Fargate Pod の設定 - Amazon EKS

Fargate Pod の設定

重要

Amazon EKS を使用した AWS Fargate は、AWS GovCloud (米国東部) および AWS GovCloud (米国西部) ではご利用いただけません。

このセクションでは、AWS Fargate で Kubernetes Pods を実行する場合の固有な Pod 設定の詳細について説明します。

Pod CPU とメモリ

Kubernetes を使用すると、Pod の各コンテナに割り当てられるリクエスト、最小 vCPU 量、メモリリソースを定義できます。Pods が Kubernetes によってスケジュールされ、少なくとも各 Pod に対して要求されたリソースが、コンピューティングリソースで使用可能な状態を確保します。詳細については、Kubernetes ドキュメントの「コンテナのリソース管理」を参照してください。

注記

Amazon EKS Fargate はノードごとに 1 つの Pod しか実行しないため、リソースが少ない場合に Pods を削除するシナリオは発生しません。すべての Amazon EKS Fargate Pods は保証された優先度で実行されるため、リクエストされた CPU とメモリは、すべてのコンテナの制限に等しくなければなりません。詳細については、Kubernetes ドキュメントの「Pods にサービスの品質を設定する」を参照してください。

Pods が Fargate にスケジュールされている場合、Pod 仕様内の vCPU とメモリの予約によって、Pod にプロビジョニングする CPU とメモリの量が決まります。

  • Init コンテナからの最大リクエストは、Init リクエスト vCPU およびメモリ要件を決定するために使用されます。

  • 実行時間の長いコンテナのリクエストは、実行時間の長いリクエスト vCPU とメモリ要件を決定するために合計されます。

  • 前記の 2 つの値のうち大きい方が、Pod 用に使用する vCPU とメモリリクエストに対して選択されます。

  • Fargate は、必要な Kubernetes コンポーネント (kubeletkube-proxy、および containerd) の各 Pod のメモリ予約に 256 MB を追加します。

Fargate では、Pods の実行に必要なリソースを常に確保するために、vCPU とメモリのリクエストの合計に最も近い、次に示すコンピューティング設定に切り上げられます。

vCPU とメモリの組み合わせを指定しない場合は、使用可能な最小の組み合わせ (.25 vCPU と 0.5 GB のメモリ) が使用されます。

次の表は、Fargate で実行されている Pods で使用可能な vCPU とメモリの組み合わせを示しています。

vCPU 値

メモリの値

.25 vCPU

0.5 GB、1 GB、2 GB

.5 vCPU

1 GB、2 GB、3 GB、4 GB

1 vCPU

2 GB、3 GB、4 GB、5 GB、6 GB、7 GB、8 GB

2 vCPU

4 GB ~ 16 GB (1 GB のインクリメント)

4 vCPU

8 GB ~ 30 GB (1 GB のインクリメント)

8 vCPU

16 GB~60 GB (4 GB のインクリメント)

16 vCPU

32 GB~120 GB (8 GB のインクリメント)

Kubernetes コンポーネント用に予約されている追加メモリにより、要求よりも多くの vCPU で Fargate タスクがプロビジョニングされる可能性があります。例えば、1 つの vCPU と 8 GB のメモリを要求すると、メモリ要求に 256 MB が追加され、2 つの vCPU と 9 GB のメモリの Fargate タスクがプロビジョニングされます。これは、1 つの vCPU と 9 GB のメモリのタスクがないためです。

Fargate で実行されている Pod のサイズと、Kubernetes が kubectl get nodes でレポートするノードサイズに相関はありません。レポートされるノードサイズは、多くの場合 Pod の容量よりも大きくなります。次のコマンドを使用して、Pod 容量を確認できます。default を Pod の名前空間に、pod-name を Pod の名前に置き換えます。

kubectl describe pod --namespace default pod-name

出力例は次のとおりです。

[...]
annotations:
    CapacityProvisioned: 0.25vCPU 0.5GB
[...]

CapacityProvisioned アノテーションは、強制された Pod 容量を表し、Fargate で実行されている Pod のコストを決定します。コンピューティング設定の料金情報については、「AWS Fargate の料金」を参照してください。

Fargate ストレージ

Fargate で実行されている Pod が、Amazon EFS ファイルシステムを自動的にマウントします。Fargate ノードでは動的永続ボリュームプロビジョニングを使用できませんが、静的プロビジョニングを使用することはできます。詳細については、GitHub の「Amazon EFS CSI ドライバー」を参照してください。

プロビジョニングすると、Fargate で実行されている各 Pod に対して、デフォルトで 20 GiB のエフェメラルストレージが割り当てられます。このタイプのストレージは、Pod の停止後に削除されます。Fargate に起動される新しい Pods では、エフェメラルストレージボリュームの暗号化がデフォルトで有効になっています。エフェメラル Pod ストレージは、AWS Fargate で管理されるキーを使用して AES-256 暗号化アルゴリズムで暗号化されます。

注記

Fargate で実行される Amazon EKS Pods のデフォルトで使用可能なストレージは、20 GiB 未満です。これは、一部のスペースが kubelet と Pod 内に読み込まれるその他の Kubernetes モジュールによって使用されるためです。

エフェメラルストレージの総量は、最大 175 GiB まで増やすことができます。Kubernetes でサイズを設定するには、Pod 内の各コンテナに対して、ephemeral-storage リソースのリクエストを指定します。Kubernetes が Pods をスケジュールすると、各 Pod に対するリソース要求の合計が Fargate タスクの容量を下回ることが保証されます。詳細については、Kubernetes ドキュメントの「Pods とコンテナのリソース管理」を参照してください。

Amazon EKS Fargate は、システム使用目的でリクエストされた数よりも大きなエフェメラルストレージをプロビジョニングします。たとえば、100 GiB のリクエストでは、115 GiB のエフェメラルストレージの Fargate タスクがプロビジョニングされます。