Fargate pod の設定 - Amazon EKS

Fargate pod の設定

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

ポッド CPU とメモリ

Kubernetes を使用する場合、pod 内の各コンテナに割り当てられるリクエスト、最小量の vCPU、およびメモリリソースを定義できます。ポッドは Kubernetes によってスケジュールされ、少なくとも各 pod に対してリクエストされたリソースがコンピューティングリソース上で利用可能になるようにします。詳細については、Kubernetes ドキュメントの「コンテナのリソース管理」を参照してください。

注記

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

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 容量を確認できます。pod-name を pod の名前に置き換えます。

kubectl describe pod pod-name

出力例を次に示します。

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

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

Fargate ストレージ

プロビジョニングされると、Fargate で実行されている各 pod は、20GB のコンテナイメージレイヤーストレージを受け取ります。ポッドストレージは一時的なものです。pod タスクが停止すると、ストレージは削除されます。2020 年 5 月 28 日以降に Fargate に起動される新しい pods では、エフェメラルストレージボリュームの暗号化がデフォルトで有効になっています。エフェメラル pod ストレージは、AWS Fargate で管理されるキーを使用して AES-256 暗号化アルゴリズムで暗号化されます。

注記

Fargate で実行される Amazon EKS pods の使用可能なストレージは、pod 内にロードされる kubelet およびその他の Kubernetes モジュールによって一部のスペースが使用されるため、20GB 未満です。