我刚开始接触AWS EC2。我知道EC2就像是一台远程计算机,我可以在上面做几乎所有想做的事情。然后我发现了ECS。我知道它使用Docker,但我对这两者之间的关系感到困惑。
ECS只是在EC2上安装Docker吗? 如果我已经有一个EC2并启动了ECS,这意味着我有两个实例吗?
我刚开始接触AWS EC2。我知道EC2就像是一台远程计算机,我可以在上面做几乎所有想做的事情。然后我发现了ECS。我知道它使用Docker,但我对这两者之间的关系感到困惑。
ECS只是在EC2上安装Docker吗? 如果我已经有一个EC2并启动了ECS,这意味着我有两个实例吗?
简短总结
概述
EC2
- 简单来说是一个远程(虚拟)机器。ECS
代表 Elastic Container Service
- 根据 计算机集群 的基本定义,ECS
基本上是一组逻辑上的 EC2
机器/实例。从技术角度讲,ECS
只是为了有效利用和管理您的 EC2
实例资源,例如存储、内存、CPU等而进行的配置。ECS
实例,然后将尽可能多的 EC2
实例注册/添加到其中。您可以添加/注册 EC2 实例,只需在您的 EC2 实例/机器上运行 Amazon ECS 容器代理即可,这可以手动完成,也可以直接使用特殊的 AMI(Amazon Machine Image),即 Amazon ECS 优化的 AMI,它已经具备了 Amazon ECS 容器代理。在启动新的 EC2 实例时,代理会自动将其注册到默认的 ECS 集群中。EC2
实例)上运行的容器代理向 Amazon ECS 发送有关实例当前运行任务和资源利用率的信息,并在收到来自 Amazon ECS 的请求时启动和停止任务。有关更多信息,请参见 Amazon ECS Container Agent。一旦设置完成,每个创建的容器实例(无论是哪个 EC2
机器/节点)都将是 Amazon ECS
群集中的一个实例。
欲了解更多信息,请阅读此文档的第十步:启动Amazon ECS容器实例:
Choose an AMI for your container instance. You can choose the Amazon ECS-optimized AMI, or another operating system, such as CoreOS or Ubuntu. If you do not choose the Amazon ECS-optimized AMI, you need to follow the procedures in Installing the Amazon ECS Container Agent.
By default, your container instance launches into your default cluster. If you want to launch into your own cluster instead of the default, choose the Advanced Details list and paste the following script into the User data field, replacing your_cluster_name with the name of your cluster.
#!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
Or, if you have an ecs.config file in Amazon S3 and have enabled Amazon S3 read-only access to your container instance role, choose the Advanced Details list and paste the following script into the User data field, replacing your_bucket_name with the name of your bucket to install the AWS CLI and write your configuration file at launch time. Note For more information about this configuration, see Storing Container Instance Configuration in Amazon S3.
#!/bin/bash yum install -y aws-cli aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
进一步澄清一下-您可以在单个 EC2
实例上创建容器,而不需要使用 ECS
。安装任何容器化技术,例如 Docker
并运行创建容器命令,将您的 EC2
设置为 Docker
主机,并拥有尽可能多的 Docker
容器(或者尽可能多地利用您的 EC2
资源)。
EC2允许您启动单个实例,可用于几乎任何您想要的用途。ECS是一个容器服务,这意味着它将启动实例,以准备启动容器应用程序。
两种服务之间的主要区别在于,使用EC2,您必须以您选择的任何方式(手动、使用CM工具或任何其他方式)独立管理每个实例 - 部署您的应用程序并自己维护服务器之间的连接。
ECS允许您启动一组计算机,作为容器应用程序的部署平台,使您能够将群集中的所有实例视为一个可用于容器负载的大型实例。
至于您的问题 - 您可以启动没有任何实例的ECS集群,但它无法运行任何内容。一旦您在ECS集群中注册了一个EC2实例,容器就可以在其中运行。因此,底线是 - 您可以只使用一个实例使用ECS和EC2,但这不是这些服务构建的实际用例。
简单来说,弹性容器服务(Elastic Container Service,ECS)是一个 Docker 容器编排服务。
您可以请求它运行一个或多个 Docker 镜像,可以将其作为自动伸缩的“服务”或即席“任务”运行。
服务和任务运行在一个“集群”上。最初,集群是一组一个或多个预配置的运行 ECS 集群代理的 EC2 服务器。集群代理会在 EC2 服务器上调度容器。这些 EC2 服务器会显示在您的 EC2 实例列表中,并按照常规 EC2 按分钟计费 - 您甚至可以像普通的 EC2 服务器一样 SSH 进入它们。 如果您需要更多的容量来运行更多的服务或任务,或者如果您希望具有针对 EC2 故障的弹性,则需要更多的 EC2 服务器。
大约在2017年11月,AWS 添加了 ECS Fargate。现在,集群可以“无服务器”运行,无需提供 EC2 节点。您只需定义任务或服务所需的 CPU 和内存数量,这意味着您只需支付 CPU 和内存时间而不是 EC2 的费用。
ECS是一个像Kubernetes或Docker swarm一样的容器编排器,EC2是一个用于创建虚拟机的Amazon Elastic Compute Cloud平台。ECS允许您在无服务器环境(Fargate)上运行容器,在这种情况下,您不必运行任何虚拟机,或者在非托管环境中,在这种情况下,您可以在EC2实例上托管容器。
好的,正如你所知道的,EC2是AWS上的虚拟机,而ECS是AWS上的容器编排系统。
要使用ECS,您需要将容器运行在一些虚拟机上,其中EC2是提供这种选择之一。
您需要在EC2上安装ecs-agent
以建立与ECS的连接。ECS还可以监视您的EC2上资源的使用情况。因此,基本上您选择更高级别的EC2类型,那么您的容器就可以使用更多的资源(CPU / MEM)。
Amazon ECS 是“弹性容器服务”的缩写。EC2 使用虚拟化和虚拟机(VM),而 Amazon ECS 用于管理 Docker 容器应用程序。它是一个完全托管的容器编排服务,类似于 Kubernetes。Amazon ECS 通过 Amazon EC2 管理运行的 Docker 容器。
Amazon EC2 是“弹性计算云”的缩写。EC2 允许企业按需访问云计算资源。有超过 500 种实例可供选择,具备最新的处理器、存储、操作系统和网络技术。
Amazon EC2 类似于托管的虚拟机(VM)服务,可以部署预配置的 VM 实例,无需进行管理。企业还可以通过自动转换和部署将本地 VM 配置上传到 EC2,并在云中进行 VM 导出/导入。
EC2是一项计算服务,使应用程序能够在AWS上运行,而ECS是主要用于编排Docker容器的AWS服务。