GitLab同实例新项目Runner注册遇网关超时错误求助
可能的原因及排查方向
VM本地网络/防火墙规则限制
虽然该VM能为旧项目正常运行Job,但注册Runner走的是GitLab的/api/v4/runnersPOST接口,可能存在以下情况:- 本地防火墙(如iptables/ufw)新增了针对该API路径的拦截规则,或者对请求频率做了限制;
- Runner配置文件中设置的代理、network_mode参数,导致注册请求的路由和正常Job请求不一致,触发网关超时。
排查:在VM上执行curl -v https://{your-instance.com}/api/v4/runners,查看能否正常访问该接口;检查本地防火墙规则和Runner配置文件(/etc/gitlab-runner/config.toml)。
GitLab实例端的限流或IP限制
- GitLab可能对单个IP的Runner注册请求做了速率限制,该VM之前注册过多个Runner,触发了实例的限流规则,导致注册请求被网关拦截;
- 新项目的CI/CD设置中,可能误添加了Runner注册的IP白名单,排除了该VM的IP。
排查:登录GitLab后台,查看Admin Area -> Settings -> Network中的Rate Limits配置;检查新项目Settings -> CI/CD -> Runners中的IP限制设置;查看GitLab日志(如/var/log/gitlab/gitlab-rails/api_json.log)是否有相关限流记录。
VM本地DNS/网络缓存异常
- VM的DNS缓存了旧的GitLab网关地址,导致注册请求发到了失效节点;
- 本地ARP缓存或路由表异常,使注册请求的路由与正常Job请求的路由不同,触发超时。
排查:在VM上执行nslookup {your-instance.com},对比其他可注册VM的解析结果;尝试刷新DNS缓存(如systemctl restart systemd-resolved)或重置路由表。
新项目注册Token异常
复制新项目的注册Token时可能出现字符缺失、多空格等错误,导致GitLab端处理请求时卡住超时。
排查:重新从新项目Settings -> CI/CD -> Runners中复制正确的注册Token,再次执行sudo gitlab-runner register命令。Runner版本与GitLab实例不兼容
该VM上的GitLab Runner版本过旧,与当前GitLab实例版本不兼容,导致注册请求的API格式不匹配,触发后端处理超时。
排查:对比其他可注册VM的Runner版本,升级该VM的Runner至与GitLab实例匹配的版本。
内容的提问来源于stack exchange,提问作者YggY
相关产品推荐
相关产品推荐

