Mor*_*itz 18 amazon-web-services docker gitlab-ci gitlab-ci-runner docker-machine
我使用 GitLab Runner 在 AWS EC2 Spot 实例上运行 CI 作业,并使用 Docker Machine 的自动缩放功能。
突然,今天 GitLab CI 无法运行作业,并向我显示了我想要启动的所有作业的以下作业输出:
Running with gitlab-runner 14.9.1 (f188edd7)
on AWS EC2 runner ...
Preparing the "docker+machine" executor
10:05
ERROR: Preparation failed: exit status 1
Will be retried in 3s ...
ERROR: Preparation failed: exit status 1
Will be retried in 3s ...
ERROR: Preparation failed: exit status 1
Will be retried in 3s ...
ERROR: Job failed (system failure): exit status 1
Run Code Online (Sandbox Code Playgroud)
我在 AWS 控制台中看到 EC2 实例确实已创建,但实例总是再次被 GitLab Runner 立即停止。
GitLab Runner 系统日志显示以下错误:
ERROR: Machine creation failed error=exit status 1 name=runner-eauzytys-gitlab-ci-1651050768-f84b471e time=1m2.409578844s
ERROR: Error creating machine: Error running provisioning: error installing docker: driver=amazonec2 name=runner-xxxxxxxx-gitlab-ci-1651050768-f84b471e operation=create
Run Code Online (Sandbox Code Playgroud)
所以这个错误似乎与 Docker 机器有关。将 GitLab Runner 以及 GitLab 的 Docker Machine 分支升级到最新版本并不能修复该错误。我正在使用 GitLab 14.8 并尝试了 GitLab Runner 14.9 和 14.10。
这可能是什么原因?
Mor*_*itz 20
更新:
与此同时,GitLab 发布了新版本的 Docker Machine 分支,将默认 AMI 升级到 Ubuntu 20.04。这意味着将 Docker Machine 升级到 GitLab 发布的最新版本将解决该问题,而无需更改运行器配置。可以在此处找到最新版本。
原始解决方法/修复:
在运行程序配置中显式指定 AMI,并且不再依赖默认的 AMI,即向"amazonec2-ami=ami-02584c1c9d05efa69"
您的 AMI添加类似内容MachineOptions
:
MachineOptions = [
"amazonec2-access-key=xxx",
"amazonec2-secret-key=xxx",
"amazonec2-region=eu-central-1",
"amazonec2-vpc-id=vpc-xxx",
"amazonec2-subnet-id=subnet-xxx",
"amazonec2-use-private-address=true",
"amazonec2-tags=runner-manager-name,gitlab-aws-autoscaler,gitlab,true,gitlab-runner-autoscale,true",
"amazonec2-security-group=ci-runners",
"amazonec2-instance-type=m5.large",
"amazonec2-ami=ami-02584c1c9d05efa69", # Ubuntu 20.04 for amd64 in eu-central-1
"amazonec2-request-spot-instance=true",
"amazonec2-spot-price=0.045"
]
Run Code Online (Sandbox Code Playgroud)
您可以在此处获取 Ubuntu AMI ID 列表。请务必选择适合您的 AWS 区域和实例架构且受 Docker 支持的一种。
解释:
GitLab Runner / Docker Machine EC2 驱动程序使用的默认 AMI 是 Ubuntu 16.04。Docker Machine 所依赖的Docker 安装脚本可在https://get.docker.com/上找到,但最近似乎已停止支持 Ubuntu 16.04。因此,Docker 在 Docker Machine 生成的 EC2 实例上安装失败,并且作业无法运行。
另请参阅此GitLab 问题。
归档时间: |
|
查看次数: |
6810 次 |
最近记录: |