让我们说我在AWS Fargate中定义一个任务定义,该任务定义将用于启动涉及涉及2个Web服务器的多容器应用程序的任务。我需要多少个任务定义,我要支付多少个任务以及创建多少个服务?
我已经阅读了很多文档,但是对我来说却没有点击。有谁能解释以下两者之间的相关性:任务定义,任务,Docker容器,服务和ECS Fargate集群?
答案 0 :(得分:2)
任务定义是一种规范。您可以使用它来定义要一起运行的一个或多个容器(带有图像URI),以及其他详细信息,例如环境变量,CPU /内存要求等。任务定义实际上并没有运行任何东西,其描述是运行时将如何设置。
任务是正在运行的实际事物。 ECS使用任务定义来运行任务;它下载容器映像,并根据任务定义中的其他详细信息配置运行时环境。您可以为任何给定的任务定义运行一个或多个任务。每个正在运行的任务是一组一个或多个正在运行的容器-任务中的容器都在同一实例上运行。
ECS中的服务是一种使用相同的任务定义来运行N个任务的一种方法,并在这N个任务意外关闭时保持运行状态。这N个任务可以在EC2中的不同实例上运行(尽管某些任务可以在同一实例上运行,具体取决于用于服务的放置策略);在Fargate上,没有实例且任务“仅运行”,因此您无需考虑放置策略。您还可以使用服务将这些任务连接到负载均衡器,以便可以在所有N个任务之间平均路由来自AWS内部或外部客户端的请求。您可以更新服务使用的任务定义,然后将触发滚动更新(启动和关闭正在运行的任务),以便在部署完成后所有正在运行的任务将使用新版本的任务定义。例如,当您创建一个新的容器映像并希望将您的服务更新为使用最新版本时,将使用此方法。
服务仅限于群集。集群实际上只是一个名字。不同的群集可以具有不同的IAM策略和角色,因此您可以限制谁可以使用IAM在不同的群集中创建服务。