07. Runner 装不好?GitLab Runner 单机/分布式/高可用全攻略

「GitLab」系列已发布: 00. GitLab 不只是代码托管:一套 DevOps 平台的 6 大核心能力 | 01. GitLab 怎么装最省心?Omnibus/Docker/K8s 三种姿势 | 02. 装完 GitLab 先配啥?管理员视角的初始化设置清单 | 03. GitLab 角色搞不清?Member/Maintainer/Owner 权限全解 | 04. 从零建好第一个 GitLab 项目:权限、变量、CI 配置入门 | 05. GitLab MR 代码审查:Code Review 最佳实践 | 06. CI/CD 到底是什么?GitLab 流水线架构从概念到实战 | 07. Runner 装不好?GitLab Runner 单机/分布式/高可用全攻略(本文)

Runner 是流水线的发动机,装错就跑不起来。本文覆盖注册、标签、并发、分布式与高可用部署,让你在哪都能跑起 CI。

前置条件

已完成 GitLab 安装部署(第 01 篇),理解 CI/CD 基本概念(第 06 篇)。需要一台独立服务器(Linux/macOS/Windows 都行)来装 Runner。

一、Runner 安装

1.1 Linux (Debian/Ubuntu)

# 加 GitLab 官方仓库
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash

# 安装
sudo apt install gitlab-runner

# 启动并设置开机自启
sudo systemctl start gitlab-runner
sudo systemctl enable gitlab-runner

1.2 macOS

brew install gitlab-runner
brew services start gitlab-runner

1.3 Windows

从 https://gitlab.com/gitlab-org/gitlab-runner/-/releases 下载 .exe 文件,双击安装。

二、Runner 注册

2.1 获取 Registration Token

GitLab 项目 → Settings → CI/CD → Runners → Expand 复制 token。

2.2 执行注册

sudo gitlab-runner register

# 输入 GitLab 地址
Please enter the gitlab-url: https://gitlab.example.com

# 输入 token
Please enter the gitlab-token: xxxxxx

# 输入描述
Please enter the description: my-runner

# 输入 tags
Please enter the tags: docker,linux

# 选择执行器
Please enter the executor: docker

2.3 配置 Docker 执行器


# /etc/gitlab-runner/config.toml
[[runners]]
  name = "my-runner"
  url = "https://gitlab.example.com"
  token = "xxx"
  executor = "docker"
  [runners.docker]
    image = "ubuntu:22.04"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

三、常用命令


# 查看 Runner 状态
sudo gitlab-runner verify

# 停止 Runner
sudo gitlab-runner stop

# 启动 Runner
sudo gitlab-runner start

# 重启 Runner
sudo gitlab-runner restart

# 卸载 Runner
sudo gitlab-runner uninstall

# 查看日志
sudo gitlab-runner logs

四、执行器类型

执行器 说明 适用场景
shell 直接在宿主机执行 简单项目、调试
docker Docker 容器执行 主流选择
kubernetes K8s Pod 执行 云原生环境
docker+machine Docker + 动态机器 大规模并发

4.1 Docker 执行器配置详解

[runners.docker]
  image = "node:18"                    # 默认镜像
  privileged = false                   # 是否特权模式(Docker in Docker)
  disable_entrypoint_overwrite = false # 不覆盖镜像入口点
  oom_kill_disable = false             # 不禁用 OOM killer
  disable_cache = false                # 启用缓存
  volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
  shm_size = 2147483648                # /dev/shm 大小 2GB

4.2 Kubernetes 执行器配置

[runners.kubernetes]
  namespace = "gitlab-runner"
  image = "ubuntu:22.04"
  service_account = "gitlab-runner"
  cpu_limit = "2"
  memory_limit = "4Gi"

五、Runner 类型

5.1 实例级 Runner

  • 注册到整个 GitLab 实例
  • 可被所有项目使用
  • Admin Area → Runners

5.2 项目级 Runner

  • 注册到特定项目
  • 仅该项目的 Pipeline 可用
  • Settings → CI/CD → Runners
flowchart TD A[GitLab 实例] --> B[实例级 Runner] A --> C[项目 A] A --> D[项目 B] C --> E[项目级 Runner] D --> F[项目级 Runner] B -->|可被所有项目使用| C B -->|可被所有项目使用| D E -->|仅项目 A 可用| C F -->|仅项目 B 可用| D

六、最佳实践

  1. 分组管理:按执行器类型分组(Docker、K8s、Shell)
  2. Tag 策略:为不同 runner 打 tag,Job 指定 tag 执行
  3. 资源监控:监控 Runner 的 CPU、内存、磁盘使用
  4. 自动缩放:大规模并发时使用 Kubernetes 或 Docker Machine

七、文章引用

📌 本文首发于微信公众号 【运维知识点滴】——专注运维实战干货,微信搜索“运维知识点滴”或扫下方二维码关注,更新不迷路。

微信公众号【运维知识点滴】 微信小程序【A5单据合并&大试卷拆分转A4打印】
运维实战干货 · 关注追更 Word 转 PDF · 试卷/发票打印神器 · 免费
运维实战干货 · 关注追更 Word 转 PDF · 试卷/发票打印神器 · 免费

💡 小程序【A5单据合并&大试卷拆分转A4打印】是干嘛的? 一个 Word 转 PDF 的打印神器,专治“文档版式和打印机对不上”:

  • A3 试卷打不出来? 学校发的电子版试卷多是 A3,家用打印机只吃 A4——上传 Word 一键转换:可缩到一页 A4(页数不变),也可对半拆成两张 A4(1:1 原大、字更清晰),两种模式自选;
  • 版式不乱:真实渲染引擎原样转换、绝不重排内容,转出的 PDF 和原 Word 排版一致,公式/表格/图片不跑版;
  • 两张 A5 单据拼一张 A4:出租车票、火车票等报销凭证拼版后,一次打印、整齐粘贴;
  • 隐私省心:无需注册,转换结果留存 5 天、最多下载 5 次即自动删除,不留任何历史记录;
  • 微信扫码即用,免费、免安装,支持 doc / docx(≤50MB)。

上一篇:06. CI/CD 到底是什么?GitLab 流水线架构从概念到实战