如何在 Amazon ECS 中为任务分配内存?

上次更新时间:2019 年 11 月 21 日

如何使用 Amazon Elastic Container Service (Amazon ECS) 为任务分配内存?

简短描述

Amazon ECS 使用两个参数为任务分配内存:memoryReservation(软限制)和 memory(硬限制)。任务运行时 Amazon EC2 容器实例的可用内存单元中将减去每个参数的值。根据任务定义中的软限制或硬限制进行计算。有关更多信息,请参阅集群利用率

注:memorymemoryReservation 参数被设置为 Amazon ECS 任务定义的容器定义参数。如果您为容器级别的 memorymemoryReservation 分别指定一个值,那么 memory 必须大于 memoryReservation。如果您指定 memoryReservation,则将从容器所在容器实例的可用内存资源减去该值。否则,使用 memory 的值。如需更多信息,见内存

解决方案

在开始之前,请检查以确认您有包括 Amazon Elastic Compute Cloud (Amazon EC2) 实例的 Amazon ECS 集群。有关创建集群的更多信息,请参阅使用经典控制台创建集群。有关配置集群和容器实例的更多信息,请参阅容器实例内存管理

查看容器实例的内存分配

  1. 打开 Amazon ECS 控制台
  2. 在导航窗格中,选择 Clusters (集群)
  3. 选择由您创建的集群。
  4. 选择 ECS 实例视图,然后选择您从容器实例列创建的集群所包含的容器实例。
    注:详细信息窗格显示可用列的内存等于已注册列的内存。
  5. 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。

创建具有软限制的任务定义

  1. Amazon ECS 控制台,在导航窗格中选择 Task Definitions (任务定义)
  2. 选择创建新的任务定义
  3. 针对启动类型,选择 EC2,然后选择下一步
  4. 任务定义名称输入一个名称。
  5. 容器定义部分,选择添加容器
  6. 容器名称输入一个名称。
  7. 针对映像,输入 nginx 或您的环境的适当 Docker 映像。
  8. 针对内存限制 (MiB),选择软限制,然后输入 700
  9. 选择 Add (添加),然后选择 Create (创建)

运行具有软限制的任务定义

  1. Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
  2. 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
  3. 选择 Run Task(运行任务)。
    注意:Task Definition(任务定义)Cluster(集群)预填充有您之前创建的任务定义和集群的名称。
  4. 如果任务使用软限制,而且它的上次状态列显示为 RUNNING(正在运行),选择导航窗格中的 Clusters(集群)。
    注意:要将任务的状态更新为 RUNNING(正在运行),请刷新页面。
  5. 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
    注:详细信息窗格显示可用列的内存小于已注册列的内存。
  6. 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
  7. 选择导航窗格中的集群,然后选择该集群。
  8. 选择任务视图,选择使用软限制的任务,然后选择停止
  9. 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
    注:详细信息窗格显示可用列的内存等于已注册列的内存。

创建使用硬限制的新任务定义修订

  1. Amazon ECS 控制台,在导航窗格中选择 Task Definitions (任务定义)
  2. 选择您创建的使用软限制的任务定义,然后选择创建新修订
  3. 容器定义部分的容器名称列,选择您为使用软限制的任务定义添加的容器。
  4. 针对内存限制 (MiB),选择硬限制,然后输入 1000
  5. 选择 Update (创建),然后选择 Create (创建)

运行具有硬限制的修订后任务定义

  1. Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
  2. 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
  3. 针对任务定义,选择您创建的使用硬限制的任务定义,然后选择运行任务
  4. 如果任务修订使用硬限制,而且它的上次状态列显示为正在运行,选择导航窗格中的集群
    注意:要将任务的状态更新为 RUNNING(正在运行),请刷新页面。
  5. 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
    注:Details(详细信息)窗格显示 Available(可用)列的内存小于 Registered(已注册)列的内存。
  6. 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
  7. 选择导航窗格中的集群,然后选择该集群。
  8. 选择任务视图,选择使用硬限制的任务,然后选择停止
  9. 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
    注:详细信息窗格显示可用列的内存等于已注册列的内存。

创建同时使用软限制和硬限制的新任务定义修订

  1. Amazon ECS 控制台,在导航窗格中选择 Task Definitions (任务定义)
  2. 选择您创建的使用硬限制的任务定义,然后选择创建新修订
  3. 容器定义部分的容器名称列,选择您为使用硬限制的任务定义添加的容器。
  4. 针对内存限制 (MiB),选择软限制,然后输入 700
  5. 选择添加硬限制,然后输入 1200
  6. 选择 Update (创建),然后选择 Create (创建)

运行具有软限制和硬限制的修订后任务定义

  1. Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
  2. 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
  3. 对于 Task Definition(任务定义),选择您创建的具有软限制和硬限制的任务定义,然后选择 Run Task(运行任务)。
  4. 当任务的 Last status (最后状态) 列显示为 RUNNING (正在运行) 时,从导航窗格中选择 Clusters (集群)
    注意:要将任务的状态更新为 RUNNING(正在运行),请刷新页面。
  5. 选择导航窗格中的集群,然后选择该集群。
  6. 选择任务视图,选择同时使用软限制金额硬限制的任务,然后选择停止
  7. 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
    注:详细信息窗格显示可用列的内存小于已注册列的内存。
  8. 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?