【问题标题】:Multiple GitLab Runner Docker instances at one host?一台主机上有多个 GitLab Runner Docker 实例?
【发布时间】:2019-08-20 09:02:10
【问题描述】:

我需要配置 GitLab 运行器以在一台服务器(主机)的 Docker 容器中运行多个共享运行器。

所以,我用gitlab-runner register 注册了两个跑步者作为具有相同标签的共享跑步者。

但是现在有一个问题 - 当前只有一个正在使用,所有其他任务都处于 Pending 状态,直到第一个运行器停止。因此,第二个运行器实例不会使用,直到第一个实例停止。

所有任务都有相同的标签。

如何在同一服务器主机上运行多个运行器?

【问题讨论】:

  • 您可以尝试增加限制/并发吗?在此处发布您的 config.toml 也会有所帮助。
  • 哦,真的,我忘记了 config.toml 文件中的 concurrent = 1 选项。谢谢!
  • 我会接受所提供的答案。每个节点运行超过 1 个 gitlab-runner 是完全没有必要的,因为它可以运行并发作业。如上所述设置 concurrent=n ,0 不是无限的,将同时运行 n 个作业。

标签: docker gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

默认并发是 1,所以除非你增加它,否则你的跑步者一次只会使用一个注册:https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-global-section

限制全局可以同时运行的作业数量。使用所有已定义跑步者的作业的最高限制。 0不代表无限

【讨论】:

    【解决方案2】:

    要利用您的所有 CPU 内核,请将 /etc/gitlab-runner/config.toml(以 root 运行时)或 ~/.gitlab-runner/config.toml(以非 root 运行时)中的 concurrent 设置为您的 CPU 数量。

    您可以像这样找到 CPU 的数量:grep -c ^processor /proc/cpuinfo

    在我的情况下,config.toml 表示concurrent = 8

    引用:

    【讨论】:

    • 核心数量和concurrent 的值之间没有直接关系,我能说得最好。每个运行器都可以访问通过主机操作系统授予它的所有 cpu 内核(如果提供,则由 cpuset_cpus 调制)。
    • @ChrisCleeland 同意这一点,这似乎是一种确定要处理多少并发的任意方式。在 gitlab 的 runner 文档站点上,它提到内存消耗是瓶颈。 imo,我会设置极高的并发性,并根据内存消耗自动缩放和平衡负载。但是,ymmv,如果您的工作需要 CPU 密集型,那么您将不得不迎合这一点
    猜你喜欢
    • 2018-10-23
    • 2019-09-03
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多