其他分享
首页 > 其他分享> > AWS 15 ECS_ECR_Fargate_DockerInAWS

AWS 15 ECS_ECR_Fargate_DockerInAWS

作者:互联网

ECS简介

•考试的新部分——一些棘手的问题
•Docker简介
•ECS
•集群
•服务
•任务
•任务定义
•ECR
•Fargate
•考试提示

什么是Docker?
•Docker是部署应用程序的软件开发平台
•应用程序打包在可以在任何操作系统上运行的容器中
•应用程序运行相同,无论运行在哪里
•任何机器
•没有兼容性问题
•可预测的行为
•工作量减少
•易于维护和部署
•适用于任何语言、任何操作系统、任何技术

Docker图像存储在哪里?
•Docker图像存储在Docker存储库中
•公共:Docker Hubhttps://hub.docker.com/
•查找多种技术或操作系统的基本映像:
•Ubuntu
•MySQL
•NodeJS,Java…
•私有:Amazon ECR(弹性容器注册)

Docker与虚拟机
•Docker“有点”是一种虚拟化技术,但并不完全是
•资源与主机共享=>一台服务器上的多个容器

从Docker开始
•下载Docker,网址:https://www.docker.com/get-started

码头集装箱管理
•为了管理集装箱,我们需要一个集装箱管理平台
•三种选择:
•ECS:亚马逊自己的平台
•Fargate:亚马逊自己的无服务器平台
•EKS:亚马逊管理的Kubernetes(开源)
--------------------------------------------------------------------------------------

ECS集群概述

•ECS集群是EC2实例的逻辑分组
•EC2实例运行ECS代理(Docker容器)
•ECS代理将实例注册到ECS集群
•EC2实例运行专门为ECS设计的特殊AMI

ECS任务定义
•任务定义是元数据JSON表单告诉ECS如何运行Docker Container

•它包含以下关键信息:
•图像名称
•容器和主机的端口绑定
•需要内存和CPU
•环境变量
•网络信息
•IAM角色
•日志配置(例如CloudWatch)

ECS服务
•ECS服务有助于定义应该运行多少任务以及应该如何运行
•它们确保在我们的EC2实例群中运行所需的任务数量。
•如果需要,它们可以链接到ELB/NLB/ALB

•让我们进行第一次服务!
--------------------------------------------------------------------------------------

ECR

•到目前为止,我们一直在使用Docker Hub(公共)的Docker图像
•ECR是一个私人Docker映像存储库
•通过IAM控制访问(权限错误=>策略)
•AWS CLI v1登录命令(考试时可能会询问)
•$(aws ecr get-login --no-include-email --region eu-west-1)

•AWS CLI v2登录命令(更新的,也可能在检查管道中询问)
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --

password-stdin 1234567890.dkr.ecr.eu-west-1.amazonaws.com
密码标准为1234567890。dkr。ecr。eu-west-1。亚马逊。通用域名格式

•Docker推拉:
•docker push 1234567890.dkr.ecr.eu-west-1.amazonaws.com/demo:latest
•docker pull 1234567890.dkr.ecr.eu-west-1.amazonaws.com/demo:latest
--------------------------------------------------------------------------------------

黑洞拦截 Fargate

•启动ECS集群时,我们必须创建EC2实例
•如果我们需要扩展,我们需要添加EC2实例
•所以我们管理基础设施…

•Fargate完全没有服务器!
•我们不提供EC2实例
•我们只是创建任务定义,AWS将为我们运行我们的容器
•要扩大规模,只需增加任务数量。易于理解的不再有EC2了
--------------------------------------------------------------------------------------

ECS IAM角色深潜

•EC2实例配置文件:
•由ECS代理使用
•对ECS服务进行API调用
•将容器日志发送到CloudWatch日志
•从ECR中提取Docker图像
•ECS任务角色:
•允许每个任务都有一个特定的角色
•为您运行的不同ECS服务使用不同的角色
•任务定义中定义了任务角色

--------------------------------------------------------------------------------------
ECS任务放置

•当启动EC2类型的任务时,ECS必须在CPU、内存和可用端口的约束下确定将其放置在何处
•类似地,当一个服务扩展进来时,ECS需要决定终止哪个任务。

•为了帮助实现这一点,您可以定义
任务分配策略与任务分配布局约束
task placement strategy and task placement constraints
•注意:这仅适用于带有EC2的ECS,不适合Fargate

ECS任务放置过程
•任务安排策略是最好的选择
•当Amazon ECS放置任务时,它使用以下过程来选择容器实例:
1.确定满足CPU、内存和端口要求的实例任务定义中的需求。
2.确定满足任务放置约束的实例。
3.确定满足任务布置策略的实例。
4.选择任务放置的实例。

ECS任务分配策略
•Binpack
•根据可用CPU或内存的最少量放置任务
•这将使用中的实例数量降至最低(节约成本)
•Random
•随机安排任务
•传播 Spread
•根据指定值均匀放置任务
•示例:instanceId,属性:ecs.availability-zone

•你可以把分配策略它们混合在一起

ECS任务放置约束
•distinctInstance: 区分:将每个任务放在不同的容器实例上
•memberOf:将任务放置在满足表达式的实例上
•使用群集查询语言(高级)
--------------------------------------------------------------------------------------

ECS–服务自动扩展
•在CloudWatch的ECS服务级别上跟踪CPU和RAM
•目标跟踪:针对特定的平均CloudWatch指标
•分步缩放:基于CloudWatch警报的缩放
•计划的扩展:基于可预测的变化

•ECS服务扩展(任务级别)≠ EC2自动缩放(实例级)
•Fargate自动缩放更容易设置(因为无服务器)

ECS–群集容量提供程序

•容量提供程序与集群联合使用,以确定任务运行的基础设施
•对于ECS和Fargate用户,Fargate和Fargate_现场容量提供者将自动添加
•对于EC2上的亚马逊ECS,您需要将容量提供商与自动缩放组

•当您运行任务或服务时,您定义了一个容量提供程序策略,以确定运行哪个提供商的优先级。

•这允许容量提供商自动提供你的基础设施
--------------------------------------------------------------------------------------
ECS Data Volumes – EC2 Task Strategies
ECS数据卷–EC2任务策略

•EBS卷已安装在EC2实例上
•这允许您的Docker容器装载EBS卷并扩展任务的存储容量

•问题:如果你的任务从一个转移到另一个EC2实例,它不会相同的EBS卷和数据
•用例:
•在同一实例上的不同容器之间装载数据卷
•扩展任务的临时存储

ECS Data Volumes – EFS File Systems
ECS数据卷–EFS文件系统

•适用于EC2任务和Fargate任务
•能够将EFS卷装载到任务
•在任何AZ启动的任务都可以在EFS中共享相同的数据体积
•Fargate+EFS=无服务器+数据不管理服务器的存储
•用例:持久的多AZ共享储存你的容器

ECS数据卷–绑定装载在容器之间共享数据 bind mounte
适用于两种EC2任务(使用本地EC2实例存储)和Fargate任务(容量为4GB坐骑)
•有助于分享短暂的多个容器之间的存储同一ECS任务的一部分
•非常适合“侧车”集装箱模式侧车可以用来将指标/日志发送给其他目的地(关注点分离)

--------------------------------------------------------------------------------------
ECS总结+考试提示
•ECS用于运行Docker容器,有3种口味:
•ECS“经典”:提供EC2实例以在其上运行容器
•Fargate:ECS无服务器,无需提供更多EC2
•EKS:AWS管理的Kubernetes


ECS经典
•必须创建EC2实例
•我们必须配置文件/etc/ecs/ecs。使用集群名称进行配置
•EC2实例必须运行ECS代理
•EC2实例可以在同一类型上运行多个容器:
•不得指定主机端口(仅限容器端口)
•您应该使用具有动态端口映射的应用程序负载平衡器
•EC2实例安全组必须允许ALB在所有端口上进行通信
•ECS任务可以有IAM角色来执行针对AWS的操作
•安全组在实例级别而非任务级别运行

ECR用于存储Docker图像
•ECR与IAM紧密结合
•AWS CLI v1登录命令(考试时可能会询问)
•$(aws ecr get-login --no-include-email --region eu-west-1)
•“aws ecr get login”生成“docker login”命令

•aws ecr get-login-password --region eu-west-1 | docker login --username AWS --
password-stdin 1234567890.dkr.ecr.eu-west-1.amazonaws.com

•Docker推拉:
•docker push 1234567890.dkr.ecr.eu-west-1.amazonaws.com/demo:latest
•docker pull 1234567890.dkr.ecr.eu-west-1.amazonaws.com/demo:latest

•如果EC2实例(或您)无法提取Docker映像,请检查IAM

Fargate
•Fargate无服务器(无需管理EC2)
•AWS为我们提供集装箱,并将其分配给埃尼
•Fargate容器由容器规范(CPU/RAM)提供
•Fargate任务可以有IAM角色来执行针对AWS的操作

ECS其他
•ECS确实与CloudWatch日志集成:
•您需要在任务定义级别设置日志记录
•每个容器将有不同的日志流
•EC2实例配置文件需要具有正确的IAM权限

•在任务中使用IAM任务角色
•任务布置策略:组合、随机、分散
•具有目标跟踪、步进缩放或计划的服务自动缩放
•通过容量提供商实现集群自动扩展
--------------------------------------------------------------------------------------

标签:DockerInAWS,15,Fargate,任务,实例,ECS,EC2,Docker
来源: https://www.cnblogs.com/ives-xu/p/16133458.html