【发布时间】:2021-01-20 05:23:50
【问题描述】:
这几天我一直在研究 Gitlab CI。我已将 EC2 -ASG 设置为具有 Spot 实例的运行器。
我想知道我们是否有任何解决方案可以在作业成功后立即删除现场实例。
以下是 gitlab runner 配置。
concurrent = 2
check_interval = 3
[session_server]
session_timeout = 1800
[[runners]]
name = "shell-runner"
url = "https://gitlab.com/"
token = "xxxx-xxxx"
executor = "shell"
limit = 1
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[[runners]]
name = "docker-machine-runner"
url = "https://gitlab.com/"
token = "xxxx-xyxyxyxy"
executor = "docker+machine"
limit = 1
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.machine]
IdleCount = 0
IdleTime = 1800
MaxBuilds = 100
MachineDriver = "amazonec2"
MachineName = "gitlab-docker-machine-%s"
MachineOptions = [
"amazonec2-region=us-west-2",
"amazonec2-ssh-user=ubuntu",
"amazonec2-vpc-id=vpc-xxxx",
"amazonec2-subnet-id=subnet-xxx",
"amazonec2-use-private-address=true",
"amazonec2-instance-type=t3a.medium",
"amazonec2-ami=ami-xxx",
"amazonec2-zone=a",
"amazonec2-security-group=gitlab-runner-sg",
"amazonec2-request-spot-instance=true",
"amazonec2-spot-price=0.025"
]
我在上述配置中有两个运行器,即 shell 和 docker-machine。
目前,它根本没有删除 Spot 队列,如果我设置 amazonec2-block-duration-minutes=20 标志,我猜它会将 Spot 实例保留 20 分钟并在之后将其删除那个。
我正在寻找一种解决方案,以便在每个作业成功后删除 Spot 实例和/或它可以等待某个时间等待其他作业并终止。
在上面的 docker-machine-runner 中,需要进行哪些配置更改才能实现这一点?
或者我们可以做任何其他自动化来实现它吗?
如果需要更多相关信息,请告诉我。
提前致谢。
【问题讨论】:
标签: amazon-web-services gitlab-ci gitlab-ci-runner docker-machine spot-instances