安装 Amazon ECS 容器代理
如果您想向 Amazon ECS 集群注册 Amazon EC2 实例,并且该实例不使用基于经 Amazon ECS 优化的 AMI 的 AMI,您可以使用以下过程手动安装 Amazon ECS 容器代理。为此,您可以从区域性 Amazon S3 存储桶之一或 Amazon Elastic Container Registry Public 下载代理。如果您从区域性 Amazon S3 存储桶之一下载,则可以选择使用 PGP 签名来验证容器代理的有效性。
注意
Amazon ECS 和 Docker 服务的 systemd
单元都有一个指令,在启动两个这两项服务之前等待 cloud-init
完成。在您的 Amazon EC2 用户数据完成运行之前,cloud-init
过程不会被视为已完成。因此,通过 Amazon EC2 用户数据启动 Amazon ECS 或 Docker 可能会导致死锁。要使用 Amazon EC2 用户数据启动容器代理,您可以使用 systemctl enable --now --no-block ecs.service
。
在非 Amazon Linux EC2 实例上安装 Amazon ECS 容器代理
要在非 Amazon EC2 实例上安装 Amazon ECS 容器代理,您可以从区域性 Amazon S3 存储桶之一下载代理并安装它。
注意
使用非 Amazon Linux AMI 时,您的 Amazon EC2 实例需要 cgroupfs
支持 cgroup
驱动程序,以便 Amazon ECS 代理能够支持任务级别的资源限制。有关更多信息,请参阅 GitHub 上的 Amazon ECS 代理
下面按区域列出了每个系统架构最新的 Amazon ECS 容器代理文件,以供参考。
使用非 Amazon Linux AMI 在 Amazon EC2 实例上安装 Amazon ECS 容器代理
-
启动一个 Amazon EC2 实例,该实例具有允许访问 Amazon ECS 的 IAM 角色。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色。
-
连接到您的实例。
-
在实例上安装最新版本的 Docker。
-
检查 Docker 版本以验证系统是否满足最低版本要求。
注意
可靠指标的最低 Docker 版本是 Docker 版本
v20.10.13
及更高版本,该版本包含在经 Amazon ECS 优化的 AMI20220607
及更高版本中。Amazon ECS 代理版本
1.20.0
及更高版本已弃用对早于1.9.0
的 Docker 版本的支持。docker --version
-
下载适用于您的操作系统和系统架构的相应的 Amazon ECS 代理文件并进行安装。
对于
deb
架构:ubuntu:~$
curl -O https://s3.
us-west-2
.amazonaws.com/amazon-ecs-agent-us-west-2
/amazon-ecs-init-latest.amd64.deb
ubuntu:~$
sudo dpkg -i amazon-ecs-init-latest.
amd64.deb
对于
rpm
架构:fedora:~$
curl -O https://s3.
us-west-2
.amazonaws.com/amazon-ecs-agent-us-west-2
/amazon-ecs-init-latest.x86_64.rpm
fedora:~$
sudo yum localinstall -y amazon-ecs-init-latest.
x86_64.rpm
-
编辑
/lib/systemd/system/ecs.service
文件并在[Unit]
部分末尾添加以下行。After=cloud-final.service
-
(可选)向
default
集群以外的集群注册实例,编辑/etc/ecs/ecs.config
文件并添加以下内容。下面的示例指定了MyCluster
集群。ECS_CLUSTER=
MyCluster
有关这些和其他代理运行时选项的更多信息,请参阅 Amazon ECS 容器代理配置。
注意
您可以选择将代理环境变量存储在 Amazon S3 中(可在启动时使用 Amazon EC2 用户数据将其下载到容器实例)。建议对敏感信息(如私有存储库的身份验证凭证)采用此方法。有关更多信息,请参阅将 Amazon ECS 容器实例配置存储在 Amazon S3 中 和在 Amazon ECS 中使用非 AWS 容器映像。
-
启动
ecs
服务。ubuntu:~$
sudo systemctl start ecs
使用主机网络模式运行 Amazon ECS 代理
在运行 Amazon ECS 容器代理时,ecs-init
将使用 host
网络模式创建容器代理容器。这是容器代理容器的唯一受支持的网络模式。
这使您能够阻止对容器代理启动的容器的 Amazon EC2 实例元数据服务端点 (http://169.254.169.254
) 的访问。这将确保容器无法访问容器实例配置文件中的 IAM 角色凭证并强制任务仅使用 IAM 任务角色凭证。有关更多信息,请参阅 Amazon ECS 任务 IAM 角色。
这还可以让容器代理不会争用 docker0
桥接上的连接和网络流量。