ubuntu 上的 Amazon ECS 代理未启动
Posted
技术标签:
【中文标题】ubuntu 上的 Amazon ECS 代理未启动【英文标题】:Amazon ECS agent on ubuntu not starting 【发布时间】:2018-12-13 09:16:22 【问题描述】:我目前正在尝试为 AWS 批处理构建自定义 ubuntu ami,并遵循此处提到的文档 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-install.html
但是,当我尝试在该机器上启动 docker 代理时,它总是给我这个错误
2018-07-04T23:34:01Z [INFO] Amazon ECS agent Version: 1.18.0, Commit: c0defea9
2018-07-04T23:34:01Z [INFO] Loading state! module="statemanager"
2018-07-04T23:34:01Z [INFO] Event stream ContainerChange start listening...
2018-07-04T23:34:01Z [INFO] Creating root ecs cgroup: /ecs
2018-07-04T23:34:01Z [INFO] Creating cgroup /ecs
2018-07-04T23:34:01Z [WARN] Disabling TaskCPUMemLimit because agent is unabled to setup '/ecs' cgroup: cgroup create: unable to create controller: mkdir /sys/fs/cgroup/systemd/ecs: read-only file system
2018-07-04T23:34:01Z [WARN] Error getting valid credentials (AKID ): NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
2018-07-04T23:34:01Z [INFO] Registering Instance with ECS
2018-07-04T23:34:01Z [ERROR] Could not register: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
2018-07-04T23:34:01Z [ERROR] Error registering: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
我确保实例具有与之关联的 ecsInstanceRole。 你们能告诉我我错过了什么吗?
【问题讨论】:
有关专业服务器或网络相关基础设施管理的问题对于 Stack Overflow 来说是无关紧要的,除非它们直接涉及编程或编程工具。您可以通过Server Fault 获得帮助。 【参考方案1】:不确定您是如何启动 ecs-agent 的。遇到了
的错误Disabling TaskCPUMemLimit because agent is unabled to setup '/ecs cgroup: cgroup create: unable to create controller: /sys/fs/cgroup/systemd/ecs: read-only file system
我们通过将卷 --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro
添加到我们启动 ecs 的 systemd 单元文件来解决此问题。
除此之外,我认为问题在于ecsInstanceRole
。您可以验证它具有以下权限吗? AmazonEC2ContainerRegistryFullAccess
、AmazonEC2ContainerServiceFullAccess
、AmazonEC2ContainerServiceforEC2Role
以下是 ecs-agent 的完整 systemd 文件。
[Unit]
Description=Docker Container %I
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStartPre=-/usr/bin/docker rm -f %i
ExecStart=/usr/bin/docker run --name %i \
--restart=on-failure:10 \
--volume=/var/run:/var/run \
--volume=/var/log/ecs/:/log:Z \
--volume=/var/lib/ecs/data:/data:Z \
--volume=/etc/ecs:/etc/ecs \
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro \
--net=host \
--env-file=/etc/ecs/ecs.config \
--env LOGSPOUT=ignore \
amazon/amazon-ecs-agent:latest
ExecStop=/usr/bin/docker stop %i
[Install]
WantedBy=default.target
【讨论】:
您好,我遇到了同样的问题,按照您的步骤操作,出现了一个新错误:level=warn time=2020-11-25T11:01:59Z msg="App: task from state file is not compatible with TaskCPUMemLimit setting, because it is not using ecs' cgroup hierarchy: arn:aws:ecs:eu-west-1:878038228002:task/ecs-application-cluster/919b61d3ca384c37a3ed4a3de159994a" module=agent_compatibility_linux.go
和 level=warn time=2020-11-25T11:01:59Z msg="App: disabling TaskCPUMemLimit." module=agent_compatibility_linux.go
其他人看到了吗?
我只是在编辑和重新启动 ecs 服务,导致上面发布了警告。我更改了源,重建并部署它,错误消失了。可能是一些缓存问题。谢谢!【参考方案2】:
我遇到了同样的消息。您需要根据此文档创建 IAM 角色并使用该角色启动实例:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html
【讨论】:
以上是关于ubuntu 上的 Amazon ECS 代理未启动的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon ECS 上的 Docker 中运行节点 API 的最佳方式是啥?
Amazon ECS 上的 Keycloak 集群失败(org.infinispan.commons.CacheException:缓存的初始状态传输超时)
错误 CS0030:无法在 Amazon Web Service 中将类型“Simple.Amazon.ECS.ImageSet[]”转换为“Simple.Amazon.ECS.ImageSet”
Amazon ECS:对于 Jenkins amazon-ecs-plugin 的给定值不存在 Fargate 配置