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 コンポーネント (
kubelet
、kube-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 の名前に置き換えます。pod-name
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 未満です。