我们使用Gitlab Runner和Kubernetes执行者,我们正在考虑我认为目前不可能的事情。我们希望将Gitlab Runner守护进程的荚分配给具有实例类型X的特定节点组的工作者,将作业的荚分配给不同的节点组Y工作节点,因为这些操作通常比Gitlab Runner的容器需要更多的计算资源。
这是为了节省成本,因为Gitlab runner主守护进程所在的节点总是在运行,然后我们希望它在廉价的实例上运行,然后需要更大的计算能力的作业可以在不同类型的不同实例上运行,这些实例将由集群自动later启动,然后在没有作业的情况下被破坏。
我对这一特性进行了研究,将荚分配到特定节点的可用方法是使用节点选择器或节点关联,但这两个配置部分中包含的规则适用于Gitlab Runner的所有荚、主荚和作业荚。该建议是为了使两种不同的配置成为可能,一种用于Gitlab运行舱,另一种用于工作舱。
当前的现有配置由节点选择器和节点/荚关联组成,但正如我所提到的,这些都适用于所有的荚,而不是我们在本例中想要的指定的。
Gitlab Runner Kubernetes执行者Config:https://docs.gitlab.com/runner/executors/kubernetes.html
发布于 2022-08-23 16:07:01
这个问题解决了!经过进一步的调查,我发现Gitlab Runner的Helm图表提供了2个nodeSelector
特性,精确地完成了我所寻找的功能,一个用于代表Gitlab Runner荚的主荚,另一个用于Gitlab Runner的工作荚。下面我展示了一个Helm图表的示例,在该图表中,我在每个nodeSelector
的旁边设置了它的域和它所影响的pod。
请注意,第一级nodeSelector
是影响主要Gitlab的级别,而runners.kubernetes.node_selector
是影响Gitlab作业荚的级别。
gitlabUrl: https://gitlab.com/
...
nodeSelector:
gitlab-runner-label-example: label-values-example-0
...
runnerRegistrationToken: ****
...
runners:
config:
[[runners]]
name = "gitlabRunnerExample"
executor = "kubernetes"
environment = ["FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY=true"]
[runners.kubernetes]
...
[runners.kubernetes.node_selector]
"gitlab-runner-label-example" = "label-values-example-1"
[runners.cache]
...
[runners.cache.s3]
...
...
发布于 2022-07-22 14:19:15
https://stackoverflow.com/questions/73078336
复制相似问题