更新经 Amazon ECS 优化的 AMI 上的 Amazon ECS 容器代理
如果您使用经 Amazon ECS 优化的 AMI,则可通过多种方式获取最新版本的 Amazon ECS 容器代理(按建议的顺序显示):
-
终止您当前的容器实例并启动最新版本的经 Amazon ECS 优化的 Amazon Linux 2 AMI(手动执行,或者通过使用最新的 AMI 更新 Auto Scaling 启动配置来执行)。这将提供全新的容器实例,其中包含最新的经测试和验证的版本的 Amazon Linux、Docker、
ecs-init
和 Amazon ECS 容器代理。有关更多信息,请参阅 经 Amazon ECS 优化的 Linux AMI。 -
使用 SSH 连接到实例,并将
ecs-init
程序包(及其依赖项)更新到最新版本。此操作提供了最新的经测试和验证的版本的 Docker 和ecs-init
(它们在 Amazon Linux 存储库中提供)以及最新版本的 Amazon ECS 容器代理。有关更多信息,请参阅 更新经 Amazon ECS 优化过的 AMI 上的 ecs-init 程序包。 -
使用
UpdateContainerAgent
API 操作更新容器代理(通过控制台执行,或者通过 Amazon CLI 或 Amazon 开发工具包执行)。有关更多信息,请参阅 使用 UpdateContainerAgent API 操作更新 Amazon ECS 容器代理。
注意
代理更新不适用于 Windows 容器实例。我们建议您启动新的容器实例来更新您的 Windows 集群中的代理版本。
更新经 Amazon ECS 优化过的 AMI 上的 ecs-init
程序包
-
通过 SSH 登录到容器实例。
-
使用以下命令更新
ecs-init
包。sudo yum update -y ecs-init
注意
将立即更新
ecs-init
程序包和 Amazon ECS 容器代理。但是,更新版本的 Docker 直至 Docker 守护程序重新启动后才会加载。通过重启实例或通过在您的实例上运行以下命令来重新启动:-
经 Amazon ECS 优化的 Amazon ECS Amazon Linux 2 AMI:
sudo systemctl restart docker
-
经 Amazon ECS 优化的 Amazon ECS Amazon Linux AMI:
sudo service docker restart && sudo start ecs
-
使用 UpdateContainerAgent
API 操作更新 Amazon ECS 容器代理
重要
UpdateContainerAgent
API 仅在经 Amazon ECS 优化的 AMI 的Linux变体上受支持,但 Amazon ECS 优化的 Amazon Linux 2(arm64)AMI 除外。对于使用经 Amazon ECS 优化的 Amazon Linux 2 (arm64) AMI 的容器实例,请更新 ecs-init
程序包更新代理。有关运行其他操作系统的容器实例,请参阅手动更新 Amazon ECS 容器代理(适用于非经 Amazon ECS 优化的 AMI)。如果您使用的是 Windows 容器实例,建议您启动新的容器实例以更新 Windows 群集中的代理版本。
UpdateContainerAgent
API 过程在您请求代理更新时开始(通过控制台执行,或者通过 Amazon CLI 或 Amazon 开发工具包。Amazon ECS 将对照最新的代理版本检查您当前的代理版本,并检查是否可以更新。如果更新不可用(例如代理已在运行最新版本),则会返回 NoUpdateAvailableException
。
上面显示的更新过程的各个阶段如下所示:
PENDING
-
代理更新可用,并且更新过程已开始。
STAGING
-
代理已开始下载代理更新。如果代理无法下载更新,或者更新的内容不正确或已损坏,代理将发送失败通知,并且更新将变为
FAILED
状态。 STAGED
-
代理下载已完成,且代理内容已经过验证。
UPDATING
-
ecs-init
服务已重新启动,并且选取了新代理版本。如果代理出于某个原因无法重新启动,更新将变为FAILED
状态;否则,代理将向 Amazon ECS 发送更新已完成的信号。
注意
代理更新不适用于 Windows 容器实例。我们建议您启动新的容器实例来更新您的 Windows 集群中的代理版本。
在控制台中更新经 Amazon ECS 优化的 AMI 上的 Amazon ECS 容器代理
-
从导航栏中,选择您的外部实例将注册的区域。
-
在导航窗格中,选择 Clusters 并选择集群。
-
在 Cluster :
name
(集群:名称)页面上,选择 Infrastructure(基础设施)选项卡。 -
在容器实例下,选择要更新的实例,然后选择操作、更新代理。