📜  Amazon Elastic Container Service(ECS)简介

📅  最后修改于: 2021-04-16 09:15:02             🧑  作者: Mango

Amazon Elastic Container Service(ECS) (也称为Amazon EC-2容器服务)是一项托管服务,允许用户跨EC2实例集群运行打包为容器的基于Docker的应用程序。在单个EC-2实例上运行简单的容器很简单,但是在实例集群上运行这些应用程序并管理该集群在管理上是繁重的过程。使用ECS,Fargate启动类型,管理EC2集群的负载和职责已转移到AWS,您可以专注于应用程序开发,而不是集群架构的管理。

AWS Fargate是一项AWS服务,它允许ECS运行容器,而无需管理和配置运行这些应用程序所需的资源。

术语:

  • 容器:容器是一个包,其中包含应用程序和应用程序运行所需的所有内容(依赖项,库等)。容器独立于底层操作系统,因此容器应用程序具有相当的可移植性,灵活性和可伸缩性。这样可以确保应用程序始终运行,无论运行容器的系统和环境如何。
  • Docker: Docker是一种软件,可促进并自动在Linux容器内安装和部署应用程序。
  • 集群:作为单个应用程序运行的EC2实例的逻辑组。
  • 容器实例: ECS群集中的每个EC2都称为容器实例。

使用ECS自动缩放:

自动缩放是一项AWS Compute服务,允许您的应用程序根据EC2实例CPU使用率或用户设置的某些其他条件(自动缩放策略)进行缩放。例如:对于Web应用程序,您可以设置一个自动缩放策略,例如,当CPU使用率超过80%持续5分钟时,添加另一个具有相同配置的EC2实例。这将在ELB后面添加另一个实例,并且现在允许将请求分为2个EC2实例。之前,Autoscaling功能仅在AWS EC2服务中提供,在2016年,它也开始支持ECS集群。

  • 还可从AWS-CLI,AWS-Console和AWS开发工具包设置ECS集群的自动扩展。
  • 您可以为应用程序选择启动任务的数量,将一个或多个策略附加到Autoscaling组,然后由AWS处理其余的策略。
  • ECS的自动扩展还可以管理ECS群集的多可用区。也就是说,您可以附加策略以在每个可用区中至少具有一个或多个实例,以使您的应用程序具有高可用性。

ECS的特点:

  • 无需用户通过与AWS Fargate进行交互来管理自己的集群管理系统。
  • 允许无缝部署基于容器的应用程序。这可以通过简单的API调用来安排或完成。
  • AWS ECS负责管理和监视应用程序集群。
  • Amazon ECS特定于区域。这意味着群集只能在单个区域中向上/向下扩展(启动或关闭容器实例)。
  • 集群是动态可伸缩的。

启动类型: ECS可以通过以下两种方式启动:

  1. Fargate启动:如上所述, Fargate启动类型承担了用户的大部分责任,并且仅吸收了用户的基本输入(如CPU类型,内存和IAM策略)来运行应用程序集群。
  2. EC2启动:这是一种更可自定义的启动类型。用户负责群集中实例的数量,扩展群集等。这使您可以更好地控制出于安全原因可能需要的群集。

无论启动类型如何,AWS Cloudwatch均已为ECS启用,可用于监视或根据需要创建警报和事件。

可用命令列表:

AWS提供了一组可在AWS-CLI(AWS命令行界面)上运行的命令,以管理您的服务。就像您要通过AWS控制台进行管理一样。以下是可用于管理AWS ECS服务的命令列表。

  • create-capacity-provider:用于创建新的容量提供程序。容量提供程序由名称,Auto Scaling组以及终止和缩放设置组成。
  • create-cluster:创建一个新的AWS ECS集群。
  • create-service:根据给定的任务定义运行并维护所需数量的任务。
  • create-task-set:在AWS ECS集群或服务中创建任务集。
  • delete-account-setting:删除帐户的IAM用户,角色或root用户的帐户设置。
  • delete-attributes:删除云服务器集群的一个或多个自定义属性。
  • delete-cluster:删除整个指定的集群。
  • delete-service:删除指定的服务。
  • delete-task-set:删除指定的任务集。
  • deploy:将新的任务定义部署到指定的ECS服务。
  • deregister-container-instance:从其ECS集群中删除指定的容器实例。
  • 注销任务定义: Derigesters ECS服务中的任务定义。
  • describe-capacity-providers:描述一个或多个容量提供者。
  • describe-clusters:描述一个或多个ECS群集。
  • describe-container-instances:描述ECS容器实例。提供有关每个实例上剩余资源的元数据。
  • describe-services:描述在指定群集中运行的服务。
  • describe-task-definition:描述任务定义。
  • describe-task-sets:描述指定的ECS服务或集群的任务集。
  • describe-tasks:描述指定的任务。
  • discover-poll-endpoint:提供AWS ECS代理的端点以轮询更新。
  • list-account-settings:提供指定主体的帐户设置。
  • list-attributes:列出指定ECS资源的属性。
  • list-clusters:提供现有集群的列表。
  • list-container-instances:给出指定集群中容器实例的列表。
  • list-services:提供在指定集群中运行的服务的列表。
  • list-tags-for-resource:提供与指定资源关联的标签。
  • list-task-definition-families:列出注册到您的帐户的所有任务定义族。
  • list-task-definitions:列出注册到您的帐户的任务定义。
  • list-tasks:使任务在指定集群中运行。
  • put-account-setting:用于修改IAM用户,角色或root用户的帐户设置。
  • put-account-setting-default:用于为尚未指定单个帐户设置的帐户上的所有IAM用户修改帐户设置。
  • put-attributes:为指定的ECS资源创建/更新属性。
  • put-cluster-capacity-providers:修改集群的容量提供程序。
  • register-container-instance:将容器实例注册到指定的集群中。
  • register-task-definition:注册来自指定系列和容器定义的任务定义。
  • run-task:从任务定义开始新任务。
  • start-task:从指定容器实例或多个实例上的任务定义启动新任务。
  • stop-task:停止指定的任务。 (请注意,与该任务关联的所有标签都将被删除。)
  • Submit-attachment-state-changes:发送以确认容器已更改状态。
  • Submit-container-state-change:发送以确认附件更改了状态。
  • Submit-task-state-change:发送以确认任务已更改状态。
  • tag-resource:将指定的标签添加到提供RN的资源中。
  • untag-resource:从资源中删除指定的标签。
  • update-cluster-settings:修改集群设置。
  • update-container-agent:在指定的容器实例上更新Amazon ECS容器代理。
  • update-container-instances-state:修改Amazon ECS容器实例的状态。
  • update-service:修改服务的参数。
  • update-service-primary-task-set:修改服务中的哪个任务集为主要任务集。在服务中的主要任务集上更新的所有参数都将转换为服务。
  • update-task-set:修改任务集。
  • 等待:等待直到满足特定条件。每个子命令都会轮询一个API,直到满足列出的要求。