ECS集群可以跑在EC2或Fargate。
如果ECS集群跑在EC2上,那么ECS集群可以理解为EC2的集群 ,每个EC2上都跑着ECS Agent(其实就是个docker容器),ECS Agent将实例注册到ECS服务 ,ECS从而可以管理和调度这些EC2:
ECS的EC2使用特定的AMI镜像。
进行ECS服务,点击Create cluster
:
为集群命名为ecs1
, 选择默认的vpc:
选择部署EC2,EC2实例类型选择c5.large, 最小数量设置为2台,(提前创建好webserver.pem
文件,以后面登录到EC2上):
点击创建。
进入到上一步创建的ecs页面,我们看到ECS会自动创建ASG,里面的EC2由ASG来管理:
进入到其中一台EC2的页面,ECS为我们的机器自动创建并绑定好了IAM Role:
进入到这个Role,发现绑定了AmazonEC2ContainerServiceforEC2Role
这条policy,里面声明了访问ecr、创建log stream、注册ecs实例
等权限:
登录到EC2,欢迎界面上输出ECS
,说明使用的是ECS定制版的AMI:
访问user-data,发现实例在启动时,将ECS集群信息写到相关的配置文件中:
curl -w '\n' 169.254.169.254/latest/user-data
ECS Agent以docker容器的形式运行,以将EC2注册到ECS中心:
进入CloudFormation页面,发现新建了一个Stack,这个Stack里管理着我们所有的ECS集群资源。当我们创建一个ECS集群时,其实是启动了一个CloudFormation Stack;当我们删除集群时,本质上也是把对应的Stack删除:
目前ECS支持两种UI,旧版本的UI功能更多,比如自定义ECS机器的安全组。本实验使用的是新版本UI