0%

Amazon ECS 滚动更新部署

滚动更新部署是由Amazon ECS控制的,服务调度程序会将容器的当前运行版本替换为所指定的版本(可以是新版本,也可以是更旧的版本)。

在滚动更新期间,Amazon ECS在服务中添加或从服务中删除的任务数由部署配置(DeploymentConfiguration) 控制。

部署配置(DeploymentConfiguration) 由服务部署期间允许的最小和最大任务数组成。

部署配置(DeploymentConfiguration)?

What?

DeploymentConfiguration 是AWS ECS中一个服务(Service)的属性。
该属性指定可选的部署参数,这些参数控制部署期间运行的任务数以及停止和启动任务的顺序。

DeploymentConfiguration含有2个属性:MaximumPercent
MinimumHealthyPercent

MaximumPercent

MaximumPercent以期望的Task数量的百分比形式表示部署批次大小,即在部署过程中RUNNING 或 PENDING 状态的Task的数量上限(向下取整)。如果使用了EC2启动类型,且Task中存在DRAINING状态的容器也会占用上限。

最大百分比的默认值为 200%。

MinimumHealthyPercent

MinimumHealthyPercent以期望的Task数量的百分比形式表示部署期间必须保持 RUNNING 状态的Task的数量下限(向上取整)。如果使用了EC2启动类型,且Task中存在DRAINING状态的容器也会占用下限。

示例

现有一个Service,其所期望的Task数量为4。当前运行版本为Version A,将更新到的版本为Version B.

MaximumPercent=200, MinimumHealthyPercent=100

在部署期间,Task数量的上限为8(⌊4*200%⌋),下限为4(⌈4*100%⌉)

deployment-200-100.gif

MaximumPercent=100, MinimumHealthyPercent=75

在部署期间,Task数量的上限为4(⌊4*100%⌋),下限为3(⌈4*75%⌉)

deployment-100-75.gif

MaximumPercent=121, MinimumHealthyPercent=74

在部署期间,Task数量的上限为4(⌊4*121%⌋),下限为3(⌈4*74%⌉)

deployment-121-74.gif

MaximumPercent=100, MinimumHealthyPercent=0

在部署期间,Task数量的上限为4(⌊4*100%⌋),下限为0(⌈4*0%⌉)

deployment-100-0.gif