

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 了解 Fargate 容器组（pod）配置详细信息
<a name="fargate-pod-configuration"></a>

本节介绍在 AWS Fargate 上运行 Kubernetes 容器组（pod）的一些唯一容器组（pod）配置详细信息。

## Pod CPU 和内存
<a name="fargate-cpu-and-memory"></a>

使用 Kubernetes，您可以定义请求、最低 vCPU 量以及分配给容器组（pod）中每个容器的内存资源。Kubernetes 会调度容器组（pod），确保至少每个容器组（pod）的请求资源可用于计算资源。有关更多信息，请参阅 Kubernetes 文档中的[管理容器的计算资源](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)。

**注意**  
由于 Amazon EKS Fargate 对每个节点只运行一个容器组（pod），因此在资源较少的情况下不会出现驱逐容器组（pod）的情况。所有 Amazon EKS Fargate 容器组（pod）都以担保优先级运行，因此请求的 CPU 和内存必须等于所有容器的限制。有关更多信息，请参阅 Kubernetes 文档中的[为 Pod（一组容器）配置服务质量](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/)。

在 Fargate 上调度容器组（pod）后，容器组（pod）规格中的 vCPU 和内存预留将确定为容器组（pod）预置的 CPU 和内存量。
+ 超出所有 Init 容器的最大请求用于确定 Init 请求 vCPU 和内存要求。
+ 将所有长时间运行的容器的请求相加来确定长时间运行的请求的 vCPU 和内存要求。
+ 然后为要用于容器组（pod）的 vCPU 和内存请求选择先前两个值中较大的值。
+ Fargate 会为所需 Kubernetes 组件（`kubelet`、`kube-proxy` 和 `containerd`）的每个容器组（pod）的内存预留增加 256 MB。

Fargate 向上舍入到下列最接近 vCPU 与内存请求总和的计算配置，确保容器组（pod）始终拥有运行所需的资源。

如果未指定 vCPU 和内存组合，则使用最小的可用组合（0.25 vCPU 和 0.5GB 内存）。

下表显示了 Fargate 上运行的容器组（pod）可以使用的 vCPU 和内存组合。


| vCPU 值 | 内存值 | 
| --- | --- | 
|  .25 vCPU  |  0.5GB、1GB、2GB  | 
|  .5 vCPU  |  1GB、2GB、3GB、4GB  | 
|  1 个 vCPU  |  2GB、3GB、4GB、5GB、6GB、7GB、8GB  | 
|  2 个 vCPU  |  4GB 到 16GB 之间（以 1GB 为增量）  | 
|  4 个 vCPU  |  8GB 到 30GB 之间（以 1GB 为增量）  | 
|  8 个 vCPU  |  介于 16GB 到 60GB 之间（以 4GB 为增量）  | 
|  16 个 vCPU  |  介于 32GB 到 120GB 之间（以 8GB 为增量）  | 

为 Kubernetes 组件保留的额外内存可能会导致 Fargate 任务的 vCPUs 数量超过请求预置的 vCPU 数量。例如，由于没有具有 1 个 vCPU 和 9 GB 内存的任务可用，因此如果请求内容为 1 个 vCPU 和 8 GB 内存，则会为其内存请求增加 256 MB，并会为 Fargate 任务预置 2 个 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 定价](https://aws.amazon.com/fargate/pricing/)。

## Fargate 存储
<a name="fargate-storage"></a>

Fargate 上运行的容器组（pod）会自动挂载 Amazon EFS 文件系统，无需手动执行驱动程序安装步骤。您不能将动态持久性卷预置与 Fargate 节点结合使用，但可以使用静态预置。有关更多信息，请参阅 GitHub 上的 [Amazon EFS CSI 驱动程序](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/README.md)。

完成预置后，在 Fargate 上运行的每个容器组（pod）都会获得 20 GiB 的默认临时存储空间。这种类型的存储将在容器组（pod）停止后被删除。在 Fargate 上启动的新容器组（pod）会默认启用临时存储卷加密。使用 AWS Fargate 托管密钥通过 AES-256 加密算法对临时容器组（pod）存储进行加密。

**注意**  
在 Fargate 上运行的 Amazon EKS 容器组（pod）的默认可用存储空间值小于 20 GiB。这是因为部分空间会被 `kubelet` 以及 Kubernetes 内部加载的其他容器组（pod）模块使用。

您最高可以将临时存储总量增加到 175GiB。要使用 Kubernetes 配置大小，请指定一个容器组（pod）中每个容器的 `ephemeral-storage` 资源请求数。在调度容器组（pod）时，Kubernetes 会确保每个容器组（pod）的资源请求总和小于 Fargate 任务的容量。有关更多信息，请参阅 Kubernetes 文档中的[为 Pod 和容器管理资源](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)。

Amazon EKS Fargate 预置的临时存储空间会高于请求的容量，以满足系统使用的需要。例如，假设您请求 100GiB 的空间，则系统会为 Fargate 任务预置 115GiB 的临时存储空间。