gpt4 book ai didi

azure - 是否可以在 Azure DevOps 代理池中的所有现有代理之间分散管道负载?

转载 作者:行者123 更新时间:2023-12-03 02:41:51 25 4
gpt4 key购买 nike

我们在 AKS 群集上创建了自己的自托管代理。

我们有 3 个副本,使用 StatefulSet 挂载持久卷 (PV) 以便使用 docker 的缓存。这意味着/var/lib/docker是每个副本上的安装。

直到一切正常。

但是,好像是这样agent-0 agent-1 完成大部分工作和agent-2工作量减少了。这会导致一个问题,如 PV-0几乎用尽了它的全部容量并且 PV-1PV-2不是:

agent-0
/dev/sdc 98.3G 83.8G 14.5G 85% /var/lib/docker
agent-1
/dev/sdd 98.3G 35.3G 63.0G 36% /var/lib/docker
agent-2
/dev/sdc 98.3G 2.1G 96.2G 2% /var/lib/docker

有没有办法控制 Azure DevOps 的管道,以便负载在代理之间分散,而不是始终使用 agent-0

最佳答案

我们最终得到了一个不同的解决方案,从 docker 中的 Docker (dind) 迁移到 docker 之外的 Docker (DooD)。

我们最初想要使用自己的自托管代理的主要原因是需要 docker 层缓存,因为使用托管代理构建 docker 镜像需要太多时间。

在某些时候,我们认为我们必须支持基于 ARM 的镜像,并开始使用 docker buildx这让我们使用了 docker dind 解决方案。

我们意识到安装 docker.sock 所包含的风险:

In order to use Docker from within a Docker container, you need to bind-mount the Docker socket. This has very serious security implications - namely, code inside the container can now run as root on your Docker host. If you're sure you want to do this, see the bind mount documentation on Docker.com.

https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops#using-docker-within-a-docker-container

但目前,这解决了我们的问题,因为我们不必管理每个 pod 的 PV,而是使用相同的 docker 来构建所有非 ARM 镜像。

旁注:对于 ARM,我们仍然会使用不同的代理,它将运行 docker buildx 来构建 docker 镜像。

关于azure - 是否可以在 Azure DevOps 代理池中的所有现有代理之间分散管道负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com