我正在通过创建集群、服务和任务定义(ECS EC2 启动类型)来学习和探索 AWS ECS 服务。并从 AWS ECR 中提取 docker 镜像。集群和任务定义都已成功创建。但创建服务时,长时间处于“Create In Progress”状态,并显示“Create Failed”。向下滚动时,它还会列出回滚。
对于 helloworld 角度应用程序,我的 Docker 文件如下所示,
FROM node:latest as build
WORKDIR /app
RUN npm install -g @angular/cli
COPY ./package.json .
RUN npm install
COPY . .
RUN ng build --configuration production
FROM nginx as runtime
COPY --from=build /app/dist/helloworld/ /usr/share/nginx/html
EXPOSE 80
我的任务完成的步骤
集群创建
1.1 创建支持 Ec2 Launch 类型的集群 1.2 选择 Amazon Linux 2 实例 1.3 选择t2.micro实例类型
任务定义
2.1 选择 EC2 启动类型 2.2 选择Linux/x86_64 2.3 .5 vCPU 和 1 Gb 内存 2.4 选择我的图像 ECR URL 并映射到端口 80 2.5 网络模式awsvpc
服务创建
3.1 选择 EC2 启动类型 3.2 应用型服务。 3.3 选择族并创建任务定义。 3.4 服务类型副本 3.4 选择任务1的期望数量
注意 -:它在 ECS Fargate 方法中成功运行(通过在任务定义中选择 Fargate 选项并在服务中选择 Fargate 选项)
问题是当我定义任务定义 ec2 启动类型和服务以及 Ec2 启动类型时。如果我在两个地方都选择 Ec2 类型,它会显示创建失败的错误。 当我检查 CloudWatch Logs 时,它没有提供任何日志。
问题已解决,
- 为了交叉检查角色/权限/策略问题,我从根用户帐户创建,但响应仍然相同。
- 我创建了集群来支持 Fargate/ec2 启动类型,并使用 Fargate 创建了服务(通过使用应用程序 LB 和不使用应用程序 LB),但响应仍然相同
- 与超出 t2.micro 实例类型的定义内存进行交叉检查
- 通过定义健康检查的/路径进行交叉检查
- 检查端口映射和http协议(protocol)
- ECR 存储库路径
- 允许权限的安全组
- 我交叉检查了通过定义启动类型 Ec2 创建的集群和任务定义。
任何人都可以建议任何故障排除方法或请提供任何解决指导吗?
更新错误
操作期间发生错误“ECS 部署断路器在 aws ecs 中触发错误
最佳答案
您不能将 t2.micro
用于需要“1 Gb 内存”的 ECS 任务。 t2.micro
太小了,因为它只有 1 Gb 的 RAM。在实例上运行的操作系统和其他进程占用了 1 Gb 可用空间的大部分,没有足够的空间来执行任务。
关于amazon-web-services - AWS ECS 服务创建(Ec2 Launch 类型)保持“Create IN Progress”状态并在回滚后显示“Create Failed”状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77007298/