Fargate ポッドの設定
このセクションでは、AWS Fargate で Kubernetes ポッドを実行するための固有のポッド設定の詳細について説明します。
ポッド CPU とメモリ
Kubernetes では、ポッド内の各コンテナに割り当てられるリクエスト、最小量の vCPU およびメモリリソースを定義できます。ポッドは Kubernetes によってスケジュールされ、少なくとも各ポッドに対してリクエストされたリソースがコンピューティングリソース上で利用可能になるようにします。詳細については、Kubernetes のドキュメントの「Managing Compute Resources for Containers
Amazon EKS Fargate はノードごとにポッドを 1 つだけ実行するため、リソースが少ない場合にポッドを削除するシナリオは発生しません。すべての Amazon EKS Fargate ポッドは保証された優先度で実行されるため、リクエストされた CPU とメモリは、すべてのコンテナの制限に等しくなければなりません。詳細については、Kubernetes ドキュメントの「Configure Quality of Service for Pods (ポッド用にサービスの品質を設定する)
ポッドが Fargate にスケジュールされている場合、ポッド仕様内の vCPU とメモリの予約によって、ポッドにプロビジョニングする CPU とメモリの量が決まります。
-
Init コンテナからの最大リクエストは、Init リクエスト vCPU およびメモリ要件を決定するために使用されます。
-
実行時間の長いコンテナのリクエストは、実行時間の長いリクエスト vCPU とメモリ要件を決定するために合計されます。
-
上記の 2 つの値のうち大きい方が、ポッドで使用する vCPU とメモリリクエストに対して選択されます。
-
Fargate は、必要な Kubernetes コンポーネント (
kubelet
、kube-proxy
、およびcontainerd
) の各ポッドのメモリ予約に 256 MB を追加します。
Fargate では、ポッドの実行に必要なリソースを常に確保するために、vCPU とメモリのリクエストの合計に最も近い、以下に示すコンピューティング設定に切り上げられます。
vCPU とメモリの組み合わせを指定しない場合は、使用可能な最小の組み合わせ (.25 vCPU と 0.5 GB のメモリ) が使用されます。
次の表は、Fargate で実行されているポッドで使用可能な 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 のインクリメント) |
Kubernetes コンポーネント用に予約されている追加メモリにより、要求よりも多くの vCPU による Fargate タスクがプロビジョニングされる可能性があります。例えば、1 つの vCPU と 8 GB のメモリを要求すると、メモリ要求に 256 MB が追加され、2 つの vCPU と 9 GB のメモリの Fargate タスクがプロビジョニングされます。これは、1 つの vCPU と 9 GB のメモリのタスクがないためです。
Fargate で実行されているポッドのサイズと、Kubernetes が kubectl get nodes
でレポートするノードサイズに相関はありません。レポートされるノードサイズは、多くの場合ポッドのキャパシティーよりも大きくなります。次のコマンドを使用して、ポッドキャパシティーを確認できます。
をご自分のポッドの名前に置き換えます。pod-name
kubectl describe pod
pod-name
出力は次のとおりです。
...
annotations:
CapacityProvisioned: 0.25vCPU 0.5GB
...
CapacityProvisioned
アノテーションは、実際のポッドキャパシティーを表し、これで Fargate で実行されているポッドのコストが決まります。コンピューティング設定の料金情報については、「AWS Fargate の料金
Fargate ストレージ
Fargate で実行されている各ポッドは、プロビジョニング時に、20 GB のコンテナイメージレイヤストレージを受け取ります。ポッドストレージは一時的なものです。ポッドが停止すると、ストレージは削除されます。2020 年 5 月 28 日以降に Fargate に起動される新しいポッドでは、エフェメラルストレージボリュームの暗号化がデフォルトで有効になっています。エフェメラルポッドストレージは、AWS Fargate で管理されるキーを使用して AES-256 暗号化アルゴリズムで暗号化されます。
Fargate で実行されている Amazon EKS ポッドの使用可能なストレージは 20 GB 未満です。これは、ポッド内にロードされる kubelet
などの Kubernetes モジュールによって一部の領域が使用されるためです。