我想更改 Amazon Elastic Container Service(Amazon ECS)集群中的容器实例类型。但是,我不知道怎么做。
简短描述
要更改您的容器实例类型,请完成以下任意一个部分中的步骤:
- 通过 AWS CloudFormation 堆栈更新 ECS 集群中启动的容器实例
- 更新 ECS 集群中手动启动的容器实例
- 更新与容量提供程序相关联的集群中的容器实例
解决方法
通过 CloudFormation 堆栈更新 ECS 集群中启动的容器实例
**重要提示:**以下步骤仅适用于使用内部创建了底层 CloudFormation 堆栈的资源创建的 ECS 集群。堆栈名称具有以下格式:EC2ContainerService-yourClusterName。这些步骤不适用于空 ECS 集群或自定义的容器实例预置方法。
更新 CloudFormation 堆栈中的 EcsInstanceType 参数值
- 打开 AWS CloudFormation console(AWS CloudFormation 控制台)。
- 选择包含您的 ECS 集群的堆栈。
**注意:**集群名称附加在堆栈名称之后(例如 EC2ContainerService-yourClusterName)。
- 依次选择操作和更新堆栈。
- 依次选择使用当前模板和下一步。
- 对于 EcsInstanceType,根据您的容器实例的实例类型设置一个适当的值,然后选择下一步。
- 跳过 Options(选项)部分,选择 Next(下一步),然后选择 Update(更新)。
替换集群中的旧容器实例
- 要更新 CloudFormation 堆栈,请完成上一部分中的第 1 步至第 4 步。
- 对于 AsgMaxSize,请输入一个等于当前大小两倍的参数值。
**注意:**例如,如果当前值为 2,则新值设置为 4。这有助于防止在更改实例类型时发生停机。
- 打开 Amazon ECS 控制台。
- 在导航窗格中,选择 Clusters(集群),然后选择您的集群。
- 选择 ECS Instances(ECS 实例)选项卡,然后选择您希望替换的旧容器实例的容器实例 ID。
**注意:**如果 DeploymentConfiguration 允许将替换任务放入容器实例中,则 Amazon ECS 将自动放置替换任务。
- 选择 Actions(操作)菜单,然后选择 Drain instances(耗尽实例)以耗尽该实例。
- 在 ECS 实例选项卡上,验证旧容器实例的正在运行的任务计数为 0。
- 在导航窗格中,选择集群,然后选择您的集群。
- 选择 ECS 实例选项卡,然后选择旧容器实例的容器实例 ID,再选择取消注册。
注意:取消注册实例会将其从 Amazon ECS 中移除。
- 在您的 CloudFormation 模板中,将 AsgMaxSize 的值设置为原始值以终止旧容器实例。
**重要提示:**此步骤假定您的自动扩缩组具有默认终止策略。
更新 ECS 集群中手动启动的容器实例
- 复制自动扩缩组的启动配置,然后为新启动配置命名。
- 更改实例类型。
- 在 Amazon EC2 控制台导航窗格的 Auto Scaling 部分,选择 Auto Scaling 组。然后选择您的容器实例的 Auto Scaling 组。
- 选择操作,然后选择编辑。
- 在弹出窗口中,对于 Launch Configuration(启动配置),选择您在这一部分的第 1 步中创建的启动配置。
- 对于 Desired Capacity(所需容量),输入一个等于当前值两倍的值,然后根据需要更新 Max(最大值)。
注意:所需容量必须介于最小组大小和最大组大小(含)之间。
- 在 Amazon ECS 控制台的导航窗格中,选择集群,然后选择您的集群。
- 选择 ECS 实例选项卡,然后选择您希望替换的旧容器实例的容器实例 ID。
- 选择操作 菜单,然后选择耗尽实例以耗尽实例。
- 在 ECS 实例选项卡上,验证旧容器实例的正在运行的任务计数为 0。
- 选择 ECS 实例选项卡,然后选择旧容器实例的容器实例 ID,再选择取消注册。
注意 :取消注册实例会将其从 Amazon ECS 中移除。
- 在 Amazon EC2 控制台导航窗格的 Auto Scaling 部分,选择 Auto Scaling 组。
- 选择操作,然后选择编辑。
- 在您的 Auto Scaling 组配置中,将理想容量和最大值设置为原始值,然后保存您的更改。
**注意:**这将终止 ECS 集群中的旧容器实例。
更新与容量提供程序相关联的集群中的容器实例
**注意:**本部分假设您有与集群关联的容量提供程序以及与容量提供程序策略关联的服务。
如果集群是使用 CloudFormation 创建的,请完成以下步骤:
- 按照上一小节中的第 1 步到第 6 步进行操作:
更新 CloudFormation 堆栈中的 EcsInstanceType 参数值
- 在 Amazon ECS console(Amazon ECS 控制台)的导航窗格中,选择 Clusters(集群),然后选择您的集群。
- 选择 ECS Instances(ECS 实例)选项卡,然后选择您希望替换的旧容器实例的容器实例 ID。
- 选择 Actions(操作)菜单,然后选择 Drain instances(耗尽实例)以耗尽该实例。
**注意:**当您耗尽实例时,容量提供程序会根据服务的 DeploymentConfiguration 启动新的容器实例。
- 在旧容器实例的 ECS Instances(ECS 实例)选项卡上,验证 Running tasks count(正在运行的任务计数)是否为 0。
如果集群是手动创建的,则完成以下步骤:
- 按照上一部分中的第 1 步到第 5 步进行操作:
更新 ECS 集群中手动启动的容器实例
- 在 Amazon ECS console(Amazon ECS 控制台)的导航窗格中,选择 Clusters(集群),然后选择您的集群。
- 选择 ECS Instances(ECS 实例)选项卡,然后选择您希望替换的旧容器实例的容器实例 ID。
- 选择 Actions(操作)菜单,然后选择 Drain instances(耗尽实例)以耗尽该实例。
**注意:**当您耗尽实例时,容量提供程序会根据服务的 DeploymentConfiguration 启动新的容器实例。
- 在旧容器实例的 ECS Instances(ECS 实例)选项卡上,验证 Running tasks count(正在运行的任务计数)是否为 0。
**注意:**容量提供程序会在定义的时间段后自动终止耗尽的实例。