启动 Amazon ECS Linux 容器实例 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

启动 Amazon ECS Linux 容器实例

Amazon ECS 容器实例是使用 Amazon EC2 控制台创建的。开始之前,请确保您已完成 设置以使用 Amazon ECS 中的步骤。

您可以通过多种方法启动实例,包括 Amazon EC2 控制台和软件开发工具包。 Amazon CLI此页面上的过程涵盖 Amazon EC2 控制台中的启动向导。有关启动实例的其他方法的信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的启动实例

有关启动向导的更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的使用新的启动实例向导启动实例

新的 Amazon EC2 启动实例向导

您可以使用新 Amazon EC2 向导启动实例。启动实例向导指定启动实例所需的启动参数。您可以使用以下列表中的参数,将未列出的参数作为默认值。以下说明将引导您完成每个参数组。

发起实例启动

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在屏幕顶部的导航栏中,显示当前 Amazon 区域(例如,美国东部(俄亥俄州))。选择要在其中启动实例的区域。

  3. 从 Amazon EC2 控制台控制面板中,选择启动实例

名称和标签

实例名称是一个标签,其中密钥为 Name(名称),而值为您指定的名称。您可以为实例、卷和弹性图形添加标签。对于竞价型实例,您只能标记竞价型实例请求。

指定实例名称和其它标签为可选项。

  • 对于 Name(名称),为实例输入一个描述性名称。如果您没有指定名称,则可以通过其 ID 标识实例,该 ID 将在您启动实例时自动生成。

  • 要添加其它标签,请选择 Add additional tags(添加其它标签)。选择 Add tag(添加标签),然后输入密钥和值,然后选择要标记的资源类型。为每个要添加的其它标签选择 Add tag(添加标签)。

应用程序和操作系统镜像 (Amazon Machine Image)

Amazon Machine Image (AMI) 中包含了创建实例所需的信息。例如,AMI 可能包含充当 Web 服务器所需的软件,例如 Apache 和您的网站。

使用搜索栏查找由发布的合适的 Amazon ECS 优化 AMI。 Amazon

  1. 搜索栏中输入以下术语之一。

  2. Enter 键。

  3. Choose an Amazon Machine Image (AMI)(选择亚马逊云机器镜像(AMI))页面上,选择 Amazon Marketplace AMIs选项卡。

  4. 从左侧 Refine results(优化结果)窗格中,选择 Amazon Web Services 作为 Publisher(发布者)。

  5. 在要使用的 AMI 行上选择 Select(选择)。

    或者,选择右上角的 Cancel(取消)以返回启动实例向导,而不选择 AMI。将选择默认 AMI。确保 AMI 满足 Linux 实例中列出的要求。

实例类型

实例类型定义了实例的硬件配置和大小。更大的实例类型拥有更多的 CPU 和内存。有关更多信息,请参阅实例类型

  • 对于 Instance type(实例类型),请为实例选择实例类型。

    您选择的实例类型决定了可用于运行您的任务的资源。

密钥对(登录)

Key pair name(密钥对名称)选择一个现有密钥对,或选择 Create new key pair(创建新密钥对)来新建一个密钥对。

重要

如果您选择 Proceed without key pair (Not recommended)(在没有密钥对的情况下继续(不推荐))选项,则将无法连接到此实例,除非您选择配置为允许用户以其它方式登录的 AMI。

Network settings (网络设置)

根据需要配置网络设置。

  • 联网平台:选择 Virtual Private Cloud (VPC)(虚拟私有云(VPC)),则在 Network interfaces(网络接口)部分中指定子网。

  • VPC:选择要在其中创建安全组的现有 VPC。

  • 子网:您可以在与可用区、本地扩展区、Wavelength 区域或 Outpost 关联的子网中启动实例。

    要在可用区中启动实例,请选择要在其中启动实例的子网。要创建新子网,请选择 Create new subnet 转到 Amazon VPC 控制台。完成此操作后,返回到启动实例向导并选择“Refresh”(刷新)图标,以便将您的子网加载到列表中。

    要在本地区域中启动实例,请选择您在本地区域中创建的子网。

    要在 Outpost 中启动实例,请在 VPC 中选择与 Outpost 关联的子网。

  • 自动分配公有 IP:如果实例应可从互联网进行访问,请验证 Auto-assign Public IP(自动分配公有 IP)字段设置为 Enable(启用)。如果不是,请将此字段设置为禁用

    注意

    容器实例需要访问才能与 Amazon ECS 服务终端节点通信。这可以通过接口 VPC 端点或具有公共 IP 地址的容器实例实现。

    有关接口 VPC 端点的更多信息,请参阅 Amazon ECS 接口 VPC 端点 (Amazon PrivateLink)

    如果您没有配置接口 VPC 端点,并且您的容器实例没有公有 IP 地址,必须使用网络地址转换(NAT)来提供此访问。有关更多信息,请参阅《Amazon VPC 用户指南》中的 NAT 网关和本指南中的 Linux 容器实例的 HTTP 代理配置

  • Firewall (security groups)(防火墙(安全组)):使用安全组为容器实例定义防火墙规则。这些规则指定哪些传入的网络流量可传输到您的容器实例。所有其他的流量将被忽略。

    • 要选择现有安全组,请选择 Select existing security group(选择现有安全组),然后选择您在 设置以使用 Amazon ECS 中创建的安全组。

配置存储

您选择的 AMI 包含一个或多个存储卷,包括根卷。您可以指定要附加到实例的其它卷。

您可以使用 Simple(简单)视图。

  • Storage type(存储类型):为您的容器实例配置存储。

    如果您使用的是经 Amazon ECS 优化的 Amazon Linux 2 AMI,您的实例将配置单个 30GiB 卷,用于在操作系统和 Docker 之间共享。

    如果您使用的是 Amazon ECS 优化型 AMI,您的实例将配置两个卷。Root (根) 卷适合操作系统使用,第二个 Amazon EBS 卷(已挂载到 /dev/xvdcz)适合 Docker 使用。

    您可以选择增大或减小实例的卷大小以满足您的应用程序需求。

高级详细信息

对于Advanced details (高级详细信息),请展开该部分以查看字段并为实例指定任何其他参数。

  • 购买选项:选择 Request Spot instances(请求竞价型实例)以请求竞价型实例。您还需要设置与 Spot 实例相关的其他字段。有关更多信息,请参阅 Spot 实例请求

    注意

    如果使用 Spot 实例时看到 Not available 消息,则需要选择其他实例类型。

    .

  • IAM 实例配置文件:选择您的容器实例 IAM 角色。其通常被命名为 ecsInstanceRole

    重要

    如果未使用适当的 IAM 权限启动容器实例,则 Amazon ECS 代理无法连接到集群。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

  • (可选)用户数据:使用用户数据(如 Amazon ECS 容器代理配置 中的代理环境变量)配置 Amazon ECS 容器实例。Amazon EC2 用户数据脚本仅在实例首次启动时执行一次。以下是用户数据的常用示例:

    • 默认情况下,您的容器实例将启动到您的默认集群中。要在非默认集群中启动,请选择 Advanced Details 列表。然后,将以下脚本粘贴到 User data 字段中,将 your_cluster_name 替换为您的集群的名称。

      #!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    • 如果 Amazon S3 中有 ecs.config 文件并且启用了对容器实例角色的 Amazon S3 只读访问权限,请选择高级详细信息列表。然后,将以下脚本粘贴到用户数据字段中,将 y our_bucket_name 替换为存储桶的名称,以便在启动时安装 Amazon CLI 并写入您的配置文件。

      注意

      有关此配置的更多信息,请参阅将容器实例配置存储在 Amazon S3 中

      #!/bin/bash yum install -y aws-cli aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
    • 使用 ECS_CONTAINER_INSTANCE_TAGS 配置参数为您的容器实例指定标签。这只创建与 Amazon ECS 关联的标签,无法使用 Amazon EC2 API 列出这些标签。

      重要

      如果您使用 Amazon EC2 Auto Scaling 组启动容器实例,则应使用 ECS_CONTAINER_INSTANCE_TAGS 代理配置参数来添加标签。这是由于标签添加到使用 自动扩缩组启动的 Amazon EC2 实例的方式造成的。

      #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=your_cluster_name ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"} EOF
    • 为您的容器实例指定标签,然后使用 ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM 配置参数将其从 Amazon EC2 传播到 Amazon ECS

      下面是一个用户数据脚本示例,该脚本将传播与容器实例关联的标签,以及向名为 your_cluster_name 的集群注册容器实例:

      #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=your_cluster_name ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance EOF

    有关更多信息,请参阅使用 Amazon EC2 用户数据引导启动容器实例

旧的 Amazon EC2 启动实例向导

启动容器实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. EC2 控制面板中,选择 Launch Instance(启动实例)。

  4. 选择一个 Amazon Machine Image (AMI) 页面上,完成以下步骤:

    1. 选择 Amazon Marketplace

    2. 为您的容器实例选择 AMI。您可以搜索一个 Amazon ECS优化型 AMI,例如经 Amazon ECS 优化的 Amazon Linux 2 AMI。如果没有选择经 Amazon ECS 优化的 AMI,则必须按照 安装 Amazon ECS 容器代理 中的过程操作。

      有关最新的经 Amazon ECS 优化的 AMI 的更多信息,请参阅 经 Amazon ECS 优化的 AMI

  5. Choose an Instance Type (选择实例类型) 页面上,您可以选择实例的硬件配置。默认情况下选择 t2.micro实例类型。您选择的实例类型决定了可用于运行您的任务的资源。

    完成后,选择下一步: 配置实例详细信息

  6. 配置实例详细信息页面上,完成以下步骤:

    1. 根据要添加到集群中的容器实例数量设置 Number of instances 字段。

    2. (可选) 要使用 Spot 实例,对于购买选项,请选中请求 Spot 实例旁边的复选框。您还需要设置与 Spot 实例相关的其他字段。有关更多信息,请参阅 Spot 实例请求

      注意

      如果使用 Spot 实例时看到 Not available 消息,则需要选择其他实例类型。

    3. 对于网络,选择用于启动容器实例的 VPC。

    4. 对于 Subnet,选择要使用的子网,或保留默认选项在任意可用区中选择默认子网。

    5. 根据是否要使实例可从公共互联网访问,设置自动分配公有 IP 字段。如果实例应可从互联网进行访问,请确保自动分配公有 IP 字段设置为启用。如果不是,请将此字段设置为禁用

      注意

      容器实例需要访问与 Amazon ECS 服务端点通信。这可以通过接口 VPC 端点或具有公共 IP 地址的容器实例实现。

      有关接口 VPC 端点的更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 Amazon ECS 接口 VPC 端点 (Amazon PrivateLink)

      如果没有配置接口 VPC 端点,并且容器实例没有公共 IP 地址,则必须使用网络地址转换 (NAT) 来提供这种访问。有关更多信息,请参阅《Amazon VPC 用户指南》中的 NAT 网关和本指南中的。Linux 容器实例的 HTTP 代理配置有关更多信息,请参阅创建 Virtual Private Cloud

    6. 选择您的容器实例 IAM 角色。其通常被命名为 ecsInstanceRole

      重要

      如果未使用适当的 IAM 权限启动容器实例,则 Amazon ECS 代理无法连接到集群。有关更多信息,请参阅Amazon ECS 容器实例 IAM 角色

    7. (可选)使用户数据(如 Amazon ECS 容器代理配置 中的代理环境变量)配置 Amazon ECS 容器实例。Amazon EC2 用户数据脚本仅在实例首次启动时执行一次。以下是用户数据的常用示例:

      • 默认情况下,您的容器实例将启动到您的默认集群中。要在非默认集群中启动,请选择 Advanced Details 列表。然后,将以下脚本粘贴到 User data 字段中,将 your_cluster_name 替换为您的集群的名称。

        #!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
      • 如果 Amazon S3 中有 ecs.config 文件并且启用了对容器实例角色的 Amazon S3 只读访问权限,请选择高级详细信息列表。然后,将以下脚本粘贴到用户数据字段中,将 y our_bucket_name 替换为存储桶的名称,以便在启动时安装 Amazon CLI 并写入您的配置文件。

        注意

        有关此配置的更多信息,请参阅将容器实例配置存储在 Amazon S3 中

        #!/bin/bash yum install -y aws-cli aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
      • 使用 ECS_CONTAINER_INSTANCE_TAGS 配置参数为您的容器实例指定标签。这只创建与 Amazon ECS 关联的标签,无法使用 Amazon EC2 API 列出这些标签。

        重要

        如果您使用 Amazon EC2 Auto Scaling 组启动容器实例,则应使用 ECS_CONTAINER_INSTANCE_TAGS 代理配置参数来添加标签。这是由于标签添加到使用 自动扩缩组启动的 Amazon EC2 实例的方式造成的。

        #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=your_cluster_name ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"} EOF
      • 为您的容器实例指定标签,然后使用 ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM 配置参数将其从 Amazon EC2 传播到 Amazon ECS

        下面是一个用户数据脚本示例,该脚本将传播与容器实例关联的标签,以及向名为 your_cluster_name 的集群注册容器实例:

        #!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=your_cluster_name ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance EOF

      有关更多信息,请参阅使用 Amazon EC2 用户数据引导启动容器实例

    8. 选择下一步:添加存储

  7. Add Storage (添加存储) 页面上,为您的容器实例配置存储。

    如果您使用的是经 Amazon ECS 优化的 Amazon Linux 2 AMI,您的实例将配置单个 30GiB 卷,用于在操作系统和 Docker 之间共享。

    如果您使用的是 Amazon ECS 优化型 AMI,您的实例将配置两个卷。Root (根) 卷适合操作系统使用,第二个 Amazon EBS 卷(已挂载到 /dev/xvdcz)适合 Docker 使用。

    您可以选择增大或减小实例的卷大小以满足您的应用程序需求。

    在配置卷后,选择下一步: 添加标签

  8. 添加标签页面上,通过提供键和值组合为容器实例指定标签。选择添加其他标签以向您的容器实例添加多个标签。有关资源标签的更多信息,请参阅 亚马逊 ECS 资源标记

    完成时选择 Next: Configure Security Group(下一步:配置安全组)。

  9. 配置安全组页面上,使用安全组为容器实例定义防火墙规则。这些规则指定哪些传入的网络流量可传输到您的容器实例。所有其他的流量将被忽略。按如下所示选择或创建安全组,然后选择 Review and Launch

  10. Review Instance Launch 页面上的 Security Groups 下,您将看到向导为您创建并选择了安全组。相反,请选择您在设置以使用 Amazon ECS中使用以下步骤创建的安全组:

    1. 选择 Edit security groups

    2. Configure Security Group 页面上,选择 Select an existing security group 选项。

    3. 从现有安全组列表中选择您为容器实例创建的安全组,然后选择 Review and Launch

  11. Review Instance Launch 页面上,选择 Launch

  12. Select an existing key pair or create a new key pair 对话框中,选择 Choose an existing key pair,然后选择您在开始设置时创建的密钥对。

    准备好后,选中确认字段,然后选择 Launch Instances

  13. 确认页面会让您知道自己的实例已启动。选择 View Instances 以关闭确认页面并返回控制台。

  14. Instances (实例) 屏幕上,您可以查看您实例的状态。启动实例只需很短的时间。启动实例时,其初始状态为 pending。实例启动后,其状态变为 running,并且会收到一个公有 DNS 名称。如果 Public DNS 列已隐藏,请依次选择 Show/HidePublic DNS

使用 Spot 实例

Spot 实例是一种未使用的 Amazon EC2 实例,以低于按需价格提供。由于竞价型实例允许您以极低的折扣请求未使用的 EC2 实例,这可能会显著降低您的 Amazon EC2 成本。竞价型实例的每小时价格称为 Spot 价格。每个可用区中的每种实例类型的 Spot 价格是由 Amazon EC2 设置的,并根据 Spot Instances 的长期供求趋势逐步调整。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的 Spot 实例

您可以将 Spot 实例注册到您的 Amazon ECS 集群。有关更多信息,请参阅启动 Amazon ECS Linux 容器实例

Spot 实例耗尽了

当 Spot 价格超过您请求的最高价格或容量不再可用时,Amazon EC2会终止、停止或休眠您的 Spot 实例。Amazon EC2 为终止和停止操作提供两分钟的竞价型实例中断通知。它没有提供休眠操作的两分钟通知。如果在实例上启用了 Amazon ECS Spot 实例耗尽,则 ECS 会收到 Spot 实例中断通知,并将实例置于 DRAINING 状态。

重要

当 Auto Scaling Capacity Rebalancing 移除实例时,Amazon ECS 不会收到来自 Amazon EC2 的通知。有关更多信息,请参阅 Amazon EC2 Auto Scaling 容器重新平衡

当某个容器实例设置为 DRAINING 时,Amazon ECS 将阻止安排放置在该容器实例上的新任务。连接即将耗尽的容器实例上处于 PENDING 状态的服务任务将立即停止。如果集群中有可用的容器实例,则在这些容器实例上启动替换服务任务。

竞价型实例耗尽在默认情况下处于关闭状态,必须手动启用。要为新的容器实例启用竞价型实例耗尽功能,请在启动容器实例时,将以下脚本添加到用户数据字段,MyCluster替换为要向其注册容器实例的集群名称。

#!/bin/bash cat <<'EOF' >> /etc/ecs/ecs.config ECS_CLUSTER=MyCluster ECS_ENABLE_SPOT_INSTANCE_DRAINING=true EOF

有关更多信息,请参阅启动 Amazon ECS Linux 容器实例

要为现有容器实例开启竞价型实例耗尽
  1. 通过 SSH 连接到 Spot 实例。

  2. 编辑 /etc/ecs/ecs.config 文件并添加以下内容:

    ECS_ENABLE_SPOT_INSTANCE_DRAINING=true
  3. 重新启动 ecs 服务。

    • 对于经 Amazon ECS 优化的 Amazon Linux 2 AMI:

      sudo systemctl restart ecs
    • 对于经 Amazon ECS 优化的 Amazon Linux AMI:

      sudo stop ecs && sudo start ecs
  4. (可选) 您可以通过查询代理自检 API 操作,验证代理是否正在运行并查看有关新容器实例的一些信息。有关更多信息,请参阅Amazon ECS 容器代理自检

    curl http://localhost:51678/v1/metadata