2019独角兽企业重金招聘Python工程师标准>>>
ECS的介绍:
elastic container service (ECS):是一个高度可扩展的快速容器管理服务,可以快速的运行,停止和管理docker集群上的容器。
ECS可以在fargate上和EC2S上面启动容器。
利用ECS,可以通过简单的调用API的方式来启动停止基于容器的应用程序,可以从集中式服务获取集群状态,并且可以访问许多熟悉的EC2功能。
可以根据资源要求、隔离性策略和可用性要求使用ECS计划容器在集群中的放置。有了ECS,无需操作自己的集群管理和配置管理系统,无需担心扩展管理基础设施。
ECS可以用来创建一致的部署和构建体验、管理和扩展批处理和提取-转换-加载(ETL)工作负载以及在微服务模型上构建先进的应用架构。
ECS的功能:
ECS是一项区域服务,可以在区域内的多个可用区中以高度可用的方式简化正在运行的应用程序容器。可以在新的或现有的VPC中创建ECS集群,在集群启动并且运行后,可以定义用于docker容器运行的指定镜像的任务定义和服务。
以下是使用fargate类型启动的ECS环境的架构:
容器和映像
要在ECS中部署应用程序,必须构建应用程序组件以在容器中运行。
任务定义
任务定义是一种JSON格式的文本文件,它描述了构成应用程序的一个或多个容器(最多10个)。可以称之为应用程序的蓝图。
任务定义为应用程序指定了参数:
要使用哪种容器、哪种启动类型、应用程序打开的端口、与任务中容器使用哪些数据卷。
任务定义的特定参数取决于启动类型。
以下是nginx web容器的启动的任务定义实例(使用的是fargate启动类型)
{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }
任务和计划
任务是集群中任务定义的实例化。在ECS上创建任务定义后可以指定集群上运行的任务数量。
使用fargate启动类型的任务,都具有自己的隔离边界,不与其他任务共享底层内核,CPU,内存或弹性网络接口。
任务计划程序负责将任务放到集群中。
集群
ECS运行任务时,需要将任务放到集群上,这是对资源的逻辑分组。
当集群中的任务使用fargate启动类型时,集群是ECS将管理集群资源。当使用EC2启动类型时,集群是ECS管理的是一组容器实例。
ECS容器实例是运行了ECS容器代理的EC2实例。ECS在指定的注册表中下载映像,并且在集群中启动映像。
容器代理
容器代理在ECS集群上的每一个基础设施上运行。向ECS发送资源运行的任务定义和资源使用率的信息,并且在接受来自ECS请求时运行,停止容器。