Amazon ECS
AWS Fargate 用户指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

awsvpc 网络模式的任务联网

awsvpc 网络模式提供的任务联网功能使 Amazon ECS 任务具有与 Amazon EC2 实例相同的联网属性。当您在任务定义中使用 awsvpc 网络模式时,每个从该任务定义启动的任务都会获取其自己的弹性网络接口、主要私有 IP 地址和内部 DNS 主机名。任务联网功能简化了容器联网,使您可以更好地控制容器化应用程序如何与您的 VPC 内的其他服务进行通信。

通过允许您在 ECS 任务中更精细地使用安全组和网络监视工具,任务联网还为您的容器提供了更高的安全性。由于每个任务都有自己的弹性网络接口,因此您也可以利用其他 Amazon EC2 联网功能 (例如 VPC 流日志),以便您可以监控您任务的流量。此外,属于同一任务的容器可以通过 localhost 接口进行通信。一个任务在给定的时间只能有一个与之相关的弹性网络接口。

要使用任务联网,请在您的任务定义中指定 awsvpc 网络模式。然后,当您运行任务或创建服务时,请指定网络配置,其中包含要放置任务的子网和要附加到关联弹性网络接口的安全组。然后在这些子网中启动 Fargate 任务,并且指定的安全组与为该任务预置的弹性网络接口相关联。

为任务创建的弹性网络接口完全由 Amazon ECS 管理。任务在弹性网络接口上发送和接收网络流量的方式与 Amazon EC2 实例使用其主要网络接口的方式相同。这些弹性网络接口在您账户的 Amazon EC2 控制台中可见,但它们不能由您的账户手动分离或修改。这是为了防止意外删除与正在运行的任务相关的弹性网络接口。您可以在 Amazon ECS 控制台中查看任务的弹性网络接口连接信息,或 DescribeTasks API 操作。当任务停止或服务缩减时,弹性网络接口将被释放。

启用任务联网

Fargate 任务需要使用 awsvpc 网络模式,因此默认启用任务联网。有关更多信息,请参阅网络模式。当您使用指定 awsvpc 网络模式的任务定义运行任务或创建服务时,您可以指定一个网络配置,其中包含要考虑放置的 VPC 子网以及要附加到任务弹性网络接口的安全组。

使用 awsvpc 网络模式的任务和服务需要与 Amazon ECS 服务相关的角色,从而向 Amazon ECS 提供代表您调用其他 AWS 服务的权限。此角色是在创建集群时 (或者在 AWS 管理控制台 中创建或更新服务时) 自动为您创建的。有关更多信息,请参阅 对 Amazon ECS 使用服务相关角色。您也可以使用以下 AWS CLI 命令创建服务相关的角色:

aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

任务联网方面的考量

使用任务联网时,需要考虑多个因素。

  • Fargate 任务能够配置为接收公有 IP 地址。

  • 在任务定义的 awsvpcConfiguration 部分中,限制为可以指定 10 个子网和 5 个安全组。

  • Amazon ECS 创建并附加的弹性网络接口不能由您的账户手动分离或修改。这是为了防止意外删除与正在运行的任务相关的弹性网络接口。要释放任务的弹性网络接口,请停止任务。

  • 在用 awsvpc 网络模式启动任务时,Amazon ECS 容器代理会为每个任务创建一个附加的 pause 容器,然后在任务定义中启动该容器。然后,它通过执行 amazon-ecs-cni-plugins CNI 插件来配置 pause 容器的网络命名空间。然后,该代理会启动任务中的其余容器,以使其共享 pause 容器的网络堆栈。这意味着,一个任务中的所有容器均可通过弹性网络接口的 IP 地址来寻址,并且这些容器可以通过 localhost 接口相互通信。

  • 具有使用 awsvpc 网络模式的任务(例如,那些 Fargate 启动类型的任务)的服务仅支持应用程序负载均衡器和网络负载均衡器;不支持 传统负载均衡器。此外,当您为这些服务创建任何目标组时,必须选择 ip 而不是 instance 作为目标类型。这是因为使用 awsvpc 网络模式的任务与弹性网络接口而不是 Amazon EC2 实例关联。有关更多信息,请参阅服务负载均衡