【发布时间】:2020-04-01 23:41:38
【问题描述】:
我们在 AKS 集群上创建了自己的自托管代理。
我们有 3 个副本,使用 StatefulSet 挂载持久卷 (PV) 以使用 docker 的缓存。这意味着/var/lib/docker 是每个副本上的挂载。
直到一切正常。
但是,agent-0 似乎完成了大部分工作,而 agent-1 和 agent-2 的工作量要少得多。这会导致问题,因为PV-0 几乎使用了它的全部容量,而PV-1 和PV-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?
【问题讨论】:
-
有趣的概念。您在组织中有多少并行工作?
-
@MarioDietner - 这取决于。有时可能超过 4 个,但通常并行运行 1-2 个作业。只是为了确保,我担心的不是并行性,而是决定哪个代理接手下一份工作的因素
-
afaik 我们无法控制池中的下一个代理。但我们可以通过设置代理需求(能力)来影响。但是,如果您担心均匀分布,请尝试将一些管道重新设计为多作业管道,以在一项作业中使用尽可能少的负载,并尽可能使用非依赖作业。还要确保您的托管代理有足够的并行作业。
-
@LeoLiu-MSFT 我已经回复了我们决定采用的解决方案
标签: azure azure-devops azure-devops-self-hosted-agent