AWS ECS - 任务和服务之间有什么区别?

Bob*_*nes 89 amazon-web-services amazon-ecs

似乎可以基于任务定义运行任务或服务.任务和服务之间有什么区别和相似之处?是否有一个线索,即在创建任务而不是服务时可以指定"任务组"?任务和服务的层次结构是否与任务定义的实例相同,还是由任务组成的服务?

谢谢.

tal*_*nes 191

任务定义为1个以上的集合容器配置.某些任务可能只需要一个容器,而其他任务可能需要同时运行2个或更多可能链接的容器.Task定义允许您指定要使用的Docker镜像,要公开的端口,要分配的CPU和内存量,如何收集日志以及定义环境变量.

一个任务,当你直接运行任务,这将启动容器(S)(在任务定义中定义),直到他们停止或退出自己,在这一点上,他们是创建不自动替换.直接运行任务是短期运行工作的理想选择,也许是通过CRON完成的一个例子.

一个服务是用来保证你总是有任务的一些数量始终运行.如果任务的容器由于错误而退出,或者底层的EC2实例失败并被替换,则ECS服务将替换失败的任务.这就是我们创建集群的原因,以便服务在CPU,内存和网络端口方面拥有足够的资源.对我们来说,只要它们运行,任务运行的实例并不重要.服务配置引用任务定义.服务负责创建任务.

服务通常用于Web服务器等长期运行的应用程序.例如,如果我在俄勒冈州(us-west-2)部署了由Node.JS支持的网站,我想要说至少有三个任务在高可用性的三个可用区(AZ)上运行; 如果一个失败,我还有另外两个,失败的一个将被替换(读作自我治疗!).创建服务是实现此目的的方法.如果我的群集中有6个EC2实例,每个AZ有2个,则服务将尽可能自动地跨区域平衡任务,同时还要考虑cpu,内存和网络资源.

更新:

我不确定分层次地思考这些事情会有所帮助.

另一个非常重要的一点是,可以将服务配置为使用负载均衡器,以便在创建任务时 - 即启动任务定义中定义的容器 - 服务将自动使用负载均衡器注册容器的EC2实例.无法将任务配置为使用负载均衡器,只有服务可以.

  • @NikolayKlimchuk 服务仅管理任务-定义和使用 envar 的是任务本身。 (2认同)
  • 这是我读过的精彩帖子之一,阐明了令人困惑的基础知识。感谢一群“才华横溢的琼斯先生”。确实有才华:-) (2认同)

rea*_*lPK 26

用@talentedmrjones的文字精美地解释.下面的图片将帮助您轻松地将其可视化:)

集群,服务,EC2实例和任务正在运行中

  • 如果任何答案查看者想要深入了解 Amazon ECS,请访问 https://www.freecodecamp.org/news/amazon-ecs-terms-and-architecture-807d8c4960fd/。解释得很漂亮! (5认同)

小智 13

任务定义:

这是描述要运行哪些 Docker 容器并代表您的应用程序的蓝图。它包括几个任务。

任务定义

服务:

任务定义的一个实例。它还定义了在任何给定时间运行的一个任务定义中的最小和最大任务、自动缩放和负载平衡。

ECS 容器实例:

这是一个 EC2 实例,上面运行着 Docker 和 ECS 容器代理。Agent 负责 ECS 和实例之间的通信,提供运行容器的状态并管理正在运行的新容器。

关系:

在此处输入图片说明

  • 我发现从答案列表中理解最清楚谢谢@xwa130 (2认同)