Answers:
甲任务定义为1个以上的集合容器配置。一些任务可能仅需要一个容器,而其他任务可能需要同时运行的2个或更多潜在链接的容器。Task定义允许您指定要使用的Docker映像,要公开的端口,要分配的CPU和内存量,如何收集日志以及定义环境变量。
一个任务,当你直接运行任务时,创建了启动容器(S)(在任务定义中定义),直到他们停止或退出自己,在这一点上,他们是不会自动替换。直接运行任务是短期任务的理想选择,例如通过CRON完成的事情。
一个服务是用来保证你总是有任务的一些数量始终运行。如果任务的容器由于错误而退出,或者基础EC2实例失败并被替换,则ECS服务将替换失败的任务。这就是为什么我们创建群集,以便该服务在要使用的CPU,内存和网络端口方面具有大量资源的原因。对于我们来说,只要在哪个实例上运行任务就没有关系。服务配置引用任务定义。服务负责创建任务。
服务通常用于长时间运行的应用程序,例如Web服务器。例如,如果我在俄勒冈州(us-west-2)部署了由Node.JS驱动的网站,那么我想说要在三个可用区域(AZ)上至少运行三个任务,以实现高可用性;如果一个失败了,我还有另外两个,失败的一个将被替换(将其视为自我修复!)。创建服务是实现此目的的方法。如果我的群集中有6个EC2实例(每个可用区2个),则该服务将自动跨区域平衡任务,同时还要考虑CPU,内存和网络资源。
更新:
我不确定分层地考虑这些事情是否有所帮助。
另一个非常重要的一点是,可以将服务配置为使用负载平衡器,以便在创建任务(即启动“任务定义”中定义的容器)时,服务将自动向负载平衡器注册容器的EC2实例。不能将任务配置为使用负载平衡器,只有服务可以。