Amazon Fargate - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Fargate

重要

此功能在 Amazon Web Services 区域(中国)不可用。您可以为集群部署托管自行管理的节点。

本主题讨论使用 Amazon EKS 在 Amazon Fargate 上运行 Kubernetes Pod。

Amazon Fargate 是一种为容器按需提供大小合适的计算容量的技术。使用 Amazon Fargate,您不必再自己预置、配置或扩展虚拟机组即可运行容器。您无需再选择服务器类型、确定扩展节点组的时间和优化集群打包。您可以控制要在 Fargate 上启动的 Pod,以及它们如何利用 Fargate 配置文件运行。Fargate 配置文件被定义为 Amazon EKS 集群的一部分。

Amazon EKS 使用由Amazon构建的控制器(使用 Kubernetes 提供的上游可扩展模型)将 Kubernetes 与 Amazon Fargate 集成。这些控制器作为 Amazon EKS 托管 Kubernetes 控制层面的一部分运行,负责将本机 Kubernetes Pod 安排到 Fargate 上。除了若干转换和验证准入控制器外,Fargate 控制器还包括一个与默认 Kubernetes 调度器一起运行的新调度器。当您启动满足 Fargate 上的运行条件的 Pod 时,集群中运行的 Fargate 控制器会识别、更新 Pod 并将其安排到 Fargate 上。

本主题介绍 Fargate 上运行的 Pod 的不同组件,还列出了将 Fargate 与 Amazon EKS 结合使用时的特别注意事项。

Amazon Fargate 注意事项

以下是使用 Amazon EKS 上的 Fargate 时要考虑的一些事项。

  • Amazon EKS 上的 Amazon Fargate 在除中国(北京)、中国(宁夏)、Amazon GovCloud(美国东部)和 Amazon GovCloud(美国西部)以外的所有 Amazon EKS 区域推出。

  • 在 Fargate 上运行的每组容器都有自己的隔离边界。其不与其他组的容器共享底层内核、CPU 资源、内存资源或弹性网络接口。

  • 网络负载均衡器和 Application Load Balancer (ALB) 只能与具有 IP 目标的 Fargate 一起使用。有关更多信息,请参阅 创建网络负载均衡器Amazon EKS 上的应用程序负载均衡

  • Fargate 暴露的服务仅在目标类型 IP 模式下运行,而不是在节点 IP 模式下运行。推荐通过服务名称进行连接来检查托管节点上运行的服务和 Fargate 上运行服务的连接性。

  • 在对 Pod 进行安排时,它们必须与 Fargate 配置文件匹配,才能在 Fargate 上运行。与 Fargate 配置文件不匹配的容器组可能会卡在 Pending 状态。如果存在匹配的 Fargate 配置文件,您可以删除已创建的待处理 Pod,以将它们重新安排到 Fargate。

  • 您只能将 适用于 Pod 的安全组 与在作为 1.18 或更高版本集群一部分的 Fargate 上运行的容器一起使用。

  • Fargate 上不支持 Daemonset。如果您的应用程序需要守护进程,则应将该守护进程重新配置为在您的 Pod 中作为辅助容器运行。

  • Fargate 上不支持特权容器。

  • 在 Fargate 上运行的 Pod 无法在 Pod 清单中指定 HostPortHostNetwork

  • 对于 Fargate Pod,默认 nofilenproc 软限制为 1024,硬限制为 65535。

  • GPU 目前在 Fargate 上不可用。

  • 在 Fargate 上运行的 Pod 仅在私有子网上受支持(对Amazon服务具有 NAT 网关访问权限,但没有到互联网网关的直接路由),因此您的集群的 VPC 必须具有可用的私有子网。对于没有出站 Internet 访问的集群,请参阅 私有集群

  • 您可以使用 Vertical Pod Autoscaler 最初针对您的 Fargate Pod 合理调整 CPU 和内存的大小,然后使用 Horizontal Pod Autoscaler 来扩展这些 Pod。如果您希望 Vertical Pod Autoscaler 自动将 Pod 重新部署到具有更大 CPU 和内存组合的 Fargate,请将 Vertical Pod Autoscaler 的模式设置为 AutoRecreate,以确保功能正常运行。有关更多信息,请参阅 GitHub 上的 Vertical Pod Autoscaler 文档。

  • 必须为 VPC 启用 DNS 解析和 DNS 主机名。有关详细信息,请参阅查看和更新您的 VPC 的 DNS 支持

  • Amazon EKS Fargate 通过将虚拟机 (VM) 中的每个容器组隔离出来,从而为 Kubernetes 应用程序添加深度防御。此 VM 边界可防止在容器逃离情况下访问其他容器组使用的基于主机的资源,容器逃离是攻击容器化应用程序和获取容器外部资源访问权限的常见方法。

    使用 Amazon EKS 不会更改您在责任共担模式下的责任。您应该仔细考虑集群安全和治理控制的配置。隔离应用程序的最安全方法始终是在单独的集群中运行该程序。

  • Fargate 配置文件支持从 VPC 辅助 CIDR 块指定子网。您可能想要指定辅助 CIDR 块。这是因为子网中可用 IP 地址的数量是有限的。因此,可在集群中创建的 Pod 数量受到限制。对 Pod 使用不同的子网让您可以增加可用 IP 地址的数量。有关更多信息,请参阅向 VPC 中添加 IPv4 CIDR 块

  • 部署到 Fargate 节点的 Pod 无法使用 Amazon EC2 实例元数据服务 (IMDS)。如果您在 Fargate 部署了需要 IAM 凭证的 Pod,请使用 服务账户的 IAM 角色 将它们分配到您的 Pod。如果您的 Pod 需要通过 IMDS 访问其他可用信息,则必须将此信息硬编码到 Pod 规范中。这包括容器部署到的 Amazon Web Services 区域或可用区。

  • 您不能将 Fargate Pod 部署到 Amazon Outposts、Amazon Wavelength 或 Amazon Local Zones。