启动 Amazon ECS Windows 容器实例 - Amazon Elastic Container Service

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

启动 Amazon ECS Windows 容器实例

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

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

新的 Amazon EC2 启动实例向导

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

发起实例启动

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

  2. 在屏幕顶部的导航栏中,显示当前 AWS 区域(例如,美国东部(俄亥俄州))。选择要在其中启动实例的区域。选择该内容是非常重要的,因为可以在区域之间共享某些 Amazon EC2 资源,而无法共享其他资源。

  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 及其值,请参阅经 Windows Amazon ECS 优化的 AMI

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

  1. 根据您的要求,在搜索栏中输入以下 AMI 之一,然后按 Enter

    • Windows_Server-2022-English-Full-ECS_Optimized

    • Windows_Server-2022-English-Core-ECS_Optimized

    • Windows_Server-2019-English-Full-ECS_Optimized

    • Windows_Server-2019-English-Core-ECS_Optimized

    • Windows_Server-2016-English-Full-ECS_Optimized

  2. Choose an Amazon Machine Image (AMI)(选择 Amazon 机器映像 (AMI))页面上,选择 Community AMIs(社区 AMI)类别。

  3. 从显示的列表中,选择经过 Microsoft 验证且具有最新发布日期的 AMI,然后单击 Select(选择)。

实例类型

实例类型定义了实例的硬件配置和大小。更大的实例类型拥有更多的 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 端点 (AWS PrivateLink)

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

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

    • 要选择现有安全组,请选择 Select an 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 替换为您的集群的名称。

      EnableTaskIAMRole 打开任务的任务 IAM 角色功能。

      此外,使用 awsvpc 网络模式时,以下选项可用。

      • EnableTaskENI:此标志打开任务联网,并且在使用 awsvpc 网络模式时是必需的。

      • AwsvpcBlockIMDS:此可选标志阻止在 awsvpc 网络模式下运行的任务容器的 IMDS 访问。

      • AwsvpcAdditionalLocalRoutes:此可选标志允许您在任务命名空间中有其他路由。

        ip-address 替换为附加路由的IP地址,例如172.31.42.23/32。

      <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster your_cluster_name -EnableTaskIAMRole -EnableTaskENI -AwsvpcBlockIMDS -AwsvpcAdditionalLocalRoutes '["ip-address"]' </powershell>

旧的 Amazon EC2 启动实例向导

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

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

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

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

    1. 选择 AWS Marketplace

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

  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 端点 (AWS 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 替换为您的集群的名称。

        EnableTaskIAMRole 打开任务的任务 IAM 角色功能。

        此外,使用 awsvpc 网络模式时,以下选项可用。

        • EnableTaskENI:此标志打开任务联网,并且在使用 awsvpc 网络模式时是必需的。

        • AwsvpcBlockIMDS:此可选标志阻止在 awsvpc 网络模式下运行的任务容器的 IMDS 访问。

        • AwsvpcAdditionalLocalRoutes:此可选标志允许您在任务命名空间中有其他路由。

          ip-address 替换为附加路由的IP地址,例如172.31.42.23/32。

        <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster your_cluster_name -EnableTaskIAMRole -EnableTaskENI -AwsvpcBlockIMDS -AwsvpcAdditionalLocalRoutes '["ip-address"]' </powershell>
    8. 选择下一步:添加存储

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

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

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

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

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

Spot 实例耗尽了

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

重要

Amazon ECS 监控具有 terminatestop 实例操作的 Spot 实例中断通知。如果您在请求 Spot 实例或 Spot 队列时指定了 hibernate 实例中断行为,则这些实例不支持 Amazon ECS Spot 实例耗尽。

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

在启动容器代理之前,您必须设置 ECS_ENABLE_SPOT_INSTANCE_DRAINING 参数。使用以下命令手动启用竞价型实例耗尽。将 my-cluster 替换为您集群的名称。

[Environment]::SetEnvironmentVariable("ECS_ENABLE_SPOT_INSTANCE_DRAINING", "true", "Machine") # Initialize the agent Initialize-ECSAgent -Cluster my-cluster

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