为 Amazon EC2 启动类型创建 Amazon ECS 集群 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon EC2 启动类型创建 Amazon ECS 集群

您可以使用控制台创建 Amazon ECS 集群。开始之前,请确保您已完成 设置以使用 Amazon ECS 中的步骤,然后分配相应的 IAM 权限。有关更多信息,请参阅 Amazon ECS 集群示例。Amazon ECS 控制台提供了一种简单的方法,通过创建 Amazon CloudFormation 堆栈来创建 Amazon ECS 集群所需的资源。

为了使集群创建过程尽可能简单,控制台对许多选项进行了原定设置选择,我们将在下面介绍这些选项。控制台中的大多数部分还提供了帮助面板,以提供进一步的上下文。

您可以在创建集群时注册 Amazon EC2 实例,也可以在创建集群后向集群注册其他实例。

您可以修改以下默认选项:

  • 更改您的实例启动所在的子网

  • 更改用于控制到容器实例的流量的安全组

  • 更改与集群关联的默认命名空间。

    命名空间允许您在集群中创建的服务无需额外配置即可连接到命名空间中的其他服务。默认命名空间与集群名称相同。有关更多信息,请参阅 互连 Amazon ECS 服务

  • 开启 Container Insights。

    CloudWatch Container Insights 从容器化应用程序和微服务中收集、聚合及汇总指标与日志。Container Insights 还提供诊断信息(如容器重新启动失败),您可以用该信息查明问题并快速解决问题。有关更多信息,请参阅 使用 Container Insights 监控 Amazon ECS 容器

  • 添加标签以帮助您识别集群。

自动扩缩组选项

当您使用 Amazon EC2 实例时,必须指定 自动扩缩组来管理运行任务和服务所在的基础设施。

当您选择创建新的 自动扩缩组时,系统会为以下行为自动配置该组:

  • Amazon ECS 管理 自动扩缩组的横向缩减和扩展操作。

  • Amazon ECS 将防止包含任务且位于 自动扩缩组中的 Amazon EC2 实例在横向缩减过程中终止。有关更多信息,请参阅 Amazon Auto Scaling 用户指南中的实例保护

您可以配置以下 自动扩缩组属性,这些属性决定组要启动的实例的类型和数量:

  • 经 Amazon ECS 优化的 AMI。

  • 实例类型。

  • 连接到实例时,可证明您的身份的 SSH 密钥对。有关如何创建 SSH 密钥的信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对和 Linux 实例

  • 为 自动扩缩组启动的实例的最小数量。

  • 为 自动扩缩组启动的实例数的最大数量。

    为了使组横向扩展,最大值必须大于 0。

Amazon ECS 将代表您创建一个 Amazon EC2 Auto Scaling 启动模板和 自动扩缩组,作为 Amazon CloudFormation 堆栈的一部分。您为 AMI、实例类型和 SSH 键对指定的值是启动模板的一部分。这些模板的前缀是 EC2ContainerService-<ClusterName>,这使得它们很容易识别。自动扩缩组的前缀是 <ClusterName>-ECS-Infra-ECSAutoScalingGroup

为 自动扩缩组启动的实例使用启动模板。

联网选项

默认情况下,实例会启动到该区域的默认子网中。使用当前与子网关联的安全组,而这些安全组会控制您的容器实例的流量。您可以对实例的子网和安全组进行更改。

您可以选择现有子网。您可以使用现有的安全组,也可以创建新的安全组。创建新的安全组时,您需要指定至少一条入站规则。

入站规则会确定哪些流量可以到达您的容器实例,并包括以下属性:

  • 要允许的协议

  • 允许的端口范围

  • 入站流量(来源)

要允许来自特定地址或 CIDR 块的入站流量,请对带有允许的 CIDR 的来源使用自定义

要允许来自所有目的地的入站流量,请使用 Anywhere 作为来源。这将自动添加 0.0.0.0/0 IPv4 CIDR 块和 ::/0 IPv6 CIDR 块。

要允许来自本地计算机的入站流量,请使用来源组作为来源。这会自动将您的本地计算机的当前 IP 地址添加为允许的来源。

要创建新集群(Amazon ECS 控制台)

在开始之前,分配相应的 IAM 权限。有关更多信息,请参阅 Amazon ECS 集群示例

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 从导航栏中,选择要使用的区域。

  3. 在导航窗格中,选择集群

  4. Clusters(集群)页面上,选择 Create cluster(创建集群)。

  5. 集群配置下,配置以下内容:

    • 对于集群名称,输入唯一的名称。

      该名称最多可以包含 255 个字母(大小写字母)、数字和连字符。

    • (可选)要使用于 Service Connect 的命名空间与集群名称不同,请在命名空间中输入一个唯一的名称。

  6. 向集群添加 Amazon EC2 实例,展开基础设施,清除 Amazon Fargate(无服务器),然后选择 Amazon EC2 实例。接下来,配置充当容量提供程序的 自动扩缩组:

    1. 要使用现有 自动扩缩组,请从 自动扩缩组(ASG)(自动扩缩组(ASG))中,选择组。

    2. 要创建 自动扩缩组,请从 自动扩缩组(ASG)(自动扩缩组(ASG))中,选择 Create new group(创建新组),然后提供有关组的以下详细信息:

      • 对于预置模型,选择使用按需型实例还是竞价型实例。

      • 如果您选择使用竞价型实例,则对于分配策略,请选择哪些 Spot 容量池(实例类型和可用区)用于该实例。

        对于大多数工作负载,您可以选择价格容量优化

        有关更多信息,请参阅《Amazon EC2 用户指南》中的竞价型实例的分配策略

      • 对于Operating system/Architecture(操作系统/架构),为 自动扩缩组实例选择经 Amazon ECS 优化的 AMI。

      • 对于 EC2 instance type(EC2 实例类型),选择工作负载的实例类型。

        如果 自动扩缩组使用相同或相似的实例类型,则托管扩展效果最佳。

      • 对于 EC2 实例角色,请选择现有的容器实例角色,也可以创建一个新的容器实例角色。

        有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色

      • 对于 Capacity(容量),输入 自动扩缩组中启动的实例数的最小值和最大值。

      • 对于 SSH key pair(SSH 密钥对),连接到实例时,选择可证明您身份的密钥对。

      • 要允许更大的图像和存储空间,请在根 EBS 卷大小中输入以 GiB 为单位的值。

  7. (可选)要更改 VPC 和子网,请在 Amazon EC2 实例的联网下,执行以下任一操作:

    • 要删除子网,请在 Subnets(子网)下,为您要删除的每个子网选择 X

    • 要更改为默认 VPC 以外的 VPC,在 VPC 下,选择现有的 VPC,然后在子网中,选择子网。

    • 选择安全组。在安全组下,选择下列选项之一:

      • 要选择现有安全组,请选择使用现有安全组,然后选择安全组。

      • 要创建安全组,请选择创建新安全组。然后为每条入站规则选择添加规则

        有关入站规则的信息,请参阅 联网选项

    • 要自动分配公有 IP 地址到您的 Amazon EC2 容器实例,请为自动分配公有 IP 选择以下选项之一:

      • 使用子网设置 – 当实例启动所在的子网是公有子网时,为实例分配公有 IP 地址。

      • 开启 – 为实例分配公有 IP 地址。

  8. (可选)要打开 Container Insights,请展开 Monitoring(监控),然后打开 Use Container Insights(使用 Container Insights)。

  9. (可选)

    如果您使用带手动选项的运行时监控,并且希望由 GuardDuty 监视此集群,则请选择添加标签并执行以下操作:

    • 对于,输入 guardDutyRuntimeMonitoringManaged

    • 对于,请输入 true

  10. (可选)要管理集群标签,请展开 Tags(标签),然后执行以下操作之一:

    [添加标签] 选择 Add tag(添加标签),然后执行以下操作:

    • 对于 Key(键),输入键名称。

    • 对于,输入键值。

    [删除标签] 选择标签的“键”和“值”右侧的Remove(删除)。

  11. 选择Create(创建)。

后续步骤

创建集群后,您可以针对应用程序创建任务定义,然后将其作为独立任务或服务的一部分运行。有关更多信息,请参阅下列内容: