如何在 Amazon ECS 中为任务分配内存?
3 分钟阅读
0
我想使用 Amazon Elastic Container Service(Amazon ECS)为任务分配内存。
简短描述
在 Amazon ECS 中,可以在任务级别和每个容器级别定义内存。在任务级别定义的内存是任务的内存硬限制。在容器级别,存在两个用于向任务分配内存的参数:memoryReservation(软限制)和 memory(硬限制)。对于托管在 Amazon EC2 实例上的任务,任务级内存字段是可选的,并且可以使用任何值。如果指定了任务级别内存值,则容器级别内存值是可选的。在任务运行时,从 Amazon ECS 容器实例的可用内存单位中减去各个参数的值。根据软限制、硬限制或任务定义的任务级别内存进行计算。有关更多信息,请参阅集群预留。
**注:**memory 和 memoryReservation 参数被设置为 Amazon ECS 任务定义的容器定义参数。如果您为容器级别的 memory 和 memoryReservation 分别指定一个值,那么 memory 必须大于 memoryReservation。如果您指定 memoryReservation,则将从容器所在容器实例的可用内存资源减去该值。否则,使用 memory 的值。如需更多信息,见内存。
解决方案
在开始之前,请检查以确认您有包括 Amazon Elastic Compute Cloud (Amazon EC2) 实例的 Amazon ECS 集群。有关创建集群的更多信息,请参阅使用经典控制台创建集群。有关配置集群和容器实例的更多信息,请参阅容器实例内存管理。
查看容器实例的内存分配
- 打开 Amazon ECS 控制台。
- 在导航窗格中,选择 Clusters (集群)。
- 选择由您创建的集群。
- 选择 ECS 实例视图,然后选择您从容器实例列创建的集群所包含的容器实例。
注:****详细信息窗格显示可用列的内存等于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
创建具有软限制的任务定义
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions(任务定义)。
- 选择创建新的任务定义。
- 针对启动类型,选择 EC2,然后选择下一步。
- 为任务定义名称输入一个名称。
- 在容器定义部分,选择添加容器。
- 为容器名称输入一个名称。
- 针对映像,输入 nginx 或您的环境的适当 Docker 映像。
- 针对内存限制 (MiB),选择软限制,然后输入 700。
- 选择 Add(添加),然后选择 Create(创建)。
运行具有软限制的任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 为“Launch Type”(启动类型)选择 EC2,选择您使用软限制创建的任务定义,然后选择 Run Task(运行任务)。注意:如果您是首次使用 ECS,则可以使用任务定义的名称和您先前创建的集群预填充 Task Definition(任务定义)和 Cluster(集群)。
- 当具有软限制的任务的 Last status(最新状态)列显示为 RUNNING(正在运行)时,移至下一个步骤。
**注意:**要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:****详细信息窗格显示可用列的内存小于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
- 选择导航窗格中的集群,然后选择该集群。
- 选择任务视图,选择使用软限制的任务,然后选择停止。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
**注:**Details(详细信息)窗格显示 Available(可用)列的内存等于 Registered(已注册)列的内存。
创建使用硬限制的新任务定义修订
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions(任务定义)。
- 选择您创建的使用软限制的任务定义,然后选择创建新修订。
- 在容器定义部分的容器名称列,选择您为使用软限制的任务定义添加的容器。
- 针对内存限制 (MiB),选择硬限制,然后输入 1000。
- 选择 Update(创建),然后选择 Create(创建)。
运行具有硬限制的修订后任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 将 Launch Type“启动类型”选为 EC2
- 针对 Task Definition(任务定义),选择您创建的使用硬限制的任务定义,然后选择 Run Task(运行任务)。
- 当具有硬限制的修订任务的 Last status(最新状态)列显示为 RUNNING(正在运行)时,请移至下一个步骤。
**注意:**要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
**注:**Details(详细信息)窗格显示 Available(可用)列的内存小于 Registered(已注册)列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
- 选择导航窗格中的集群,然后选择该集群。
- 选择任务视图,选择使用硬限制的任务,然后选择停止。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
**注:**Details(详细信息)窗格显示 Available(可用)列的内存等于 Registered(已注册)列的内存。
创建同时使用软限制和硬限制的新任务定义修订
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions(任务定义)。
- 选择您创建的使用硬限制的任务定义,然后选择创建新修订。
- 在容器定义部分的容器名称列,选择您为使用硬限制的任务定义添加的容器。
- 针对内存限制 (MiB),选择软限制,然后输入 700。
- 选择添加硬限制,然后输入 1200。
- 选择 Update(创建),然后选择 Create(创建)。
运行具有软限制和硬限制的修订后任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 将 Launch Type“启动类型”选为 EC2
- 对于 Task Definition(任务定义),选择您创建的具有软限制和硬限制的任务定义,然后选择 Run Task(运行任务)。
- 当任务的 Last status(最新状态)列显示为 RUNNING(正在运行)时,请移至下一个步骤。
**注意:**要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:****详细信息窗格显示可用列的内存小于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
- 选择导航窗格中的 Clusters(集群),然后选择该集群。
- 选择任务视图,选择同时使用软限制金额硬限制的任务,然后选择停止。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
**注:**Details(详细信息)窗格显示 Available(可用)列的内存等于 Registered(已注册)列的内存。
使用任务级别内存限制创建任务定义的新修订版
- 从 Amazon ECS 控制台,在导航窗格中选择 Task Definitions(任务定义)。
- 选择您使用硬限制和软限制创建的任务定义,然后选择 Create new revision创(建新修订)。
- 在 Task Size(任务大小)部分,在 Task memory (MiB)(任务内存(MiB))中输入 1000
- 在 Container Definitions(容器定义)部分的 Container Name(容器名称)列,选择您为使用硬限制和软限制的任务定义添加的容器。
- 对于 Memory Limits (MiB)(内存限制 (MiB)),请删除 Soft limit(软限制),方法是选中右侧的 x 图标。
- 接下来,对于 Hard limit(硬限制),删除值 1200,方法是选中并删除此值。
- 选择 Update(创建),然后选择 Create(创建)。
使用任务级别内存限制运行修订的任务定义
- 从 Amazon ECS 控制台,在导航窗格中,选择 Clusters(集群),然后选择要创建的集群。
- 选择 Tasks(任务)视图,然后选择 Run new Task(运行新任务)。
- 将 Launch Type(启动类型)选为 EC2
- 对于 Task Definition(任务定义),选择您使用任务级别内存创建的任务定义,然后选择 Run Task(运行任务)。
- 当任务的 Last status(最新状态)列显示为 RUNNING(正在运行)时,请移至下一个步骤。
**注意:**要将任务的状态更新为 RUNNING(正在运行),请刷新页面。 - 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
注:****详细信息窗格显示可用列的内存小于已注册列的内存。 - 如需实例的资源使用情况的统计信息,请使用 SSH 连接到实例,然后运行 docker stats 命令。
**注意:**您可能会发现 docker stats 命令显示的容器内存限制可能不是 1000 MiB。这是因为 Task Level memory(任务级别内存)是由 ECS 代理而不是 Docker 进程守护程序托管。 - 选择导航窗格中的 Clusters(集群),然后选择该集群。
- 选择 Tasks(任务)视图,选择使用任务级别定义的任务,然后选择 Stop(停止)。
- 选择 ECS Instances(ECS 实例)视图,然后从 Container Instance(容器实例)列选择实例。
**注:**Details(详细信息)窗格显示 Available(可用)列的内存等于 Registered(已注册)列的内存。
相关信息
AWS 官方已更新 2 年前
没有评论
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前