Fargate Pod 配置
本节介绍在 Amazon Fargate 上运行 Kubernetes Pod 的一些唯一 Pod 配置的详细信息。
Pod CPU 和内存
使用 Kubernetes,您可以定义请求、最低 vCPU 量以及分配给 Pod 中每个容器的内存资源。Pod 由 Kubernetes 安排,以确保至少每个 Pod 的请求资源可用于计算资源。有关更多信息,请参阅 Kubernetes 文档中的管理容器的计算资源
由于 Amazon EKS Fargate 对每个节点只运行一个 Pod(一组容器),因此在资源较少的情况下不会出现驱逐 Pod 的情况。所有 Amazon EKS Fargate Pod(一组容器)都以担保优先级运行,因此请求的 CPU 和内存必须等于所有容器的限制。有关更多信息,请参阅 Kubernetes 文档中的为 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 和内存组合,则使用最小的可用组合(.25 vCPU 和 0.5 GB 内存)。
下表显示了 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 为增量) |
为 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 容量。将
替换为Pod(一组容器)的名称。pod-name
kubectl describe pod
pod-name
输出如下所示。
...
annotations:
CapacityProvisioned: 0.25vCPU 0.5GB
...
CapacityProvisioned
注释表示强制执行的 Pod 容量,它决定了在 Fargate 上运行的 Pod 的成本。有关这些计算配置的定价信息,请参阅 Amazon Fargate 定价
Fargate 存储
预置后,Fargate 上运行的每个 Pod 将接收 20 GB 的容器镜像层存储。Pod 存储是短暂存储。Pod 停止后,该存储将被删除。对于 2020 年 5 月 28 日或之后在 Fargate 上启动的新 Pod,预设情况下已启用短暂存储卷加密。使用 Amazon Fargate 托管密钥通过 AES-256 加密算法对短暂 Pod 存储进行加密。
Fargate 上运行的 Amazon EKS Pod 的可用存储空间不到 20GB,因为 kubelet
以及 Pod 内部加载的其他 Kubernetes 模块占用了一些空间。