このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
このセクションでは、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 ドキュメントの「Pod に Quality of Service を設定する
Pods が Fargate にスケジュールされている場合、Pod 仕様内の vCPU とメモリの予約によって、Pod にプロビジョニングする CPU とメモリの量が決まります。
-
Init コンテナからの最大リクエストは、Init リクエスト vCPU およびメモリ要件を決定するために使用されます。
-
実行時間の長いコンテナのリクエストは、実行時間の長いリクエスト vCPU とメモリ要件を決定するために合計されます。
-
前記の 2 つの値のうち大きい方が、Pod 用に使用する vCPU とメモリリクエストに対して選択されます。
-
Fargate は、必要な Kubernetes コンポーネント (
kubelet
、kube-proxy
、およびcontainerd
) の各 Pod’s のメモリ予約に 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’s の容量よりも大きくなります。次のコマンドを使用して、Pod 容量を確認できます。default
を Pod’s の名前空間に、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 ドキュメントの「ポッドとコンテナのリソース管理
Amazon EKS Fargate は、システム使用目的でリクエストされた数よりも大きなエフェメラルストレージをプロビジョニングします。たとえば、100 GiB のリクエストでは、115 GiB のエフェメラルストレージの Fargate タスクがプロビジョニングされます。