当前位置: 首页 > news >正文

极狐GitLab CI/CD 作业一直处于等待状态,如何解决?

本分分享 GitLab CI/CD Job 不工作的的故障排查方法:当 GitLab Runner 不接受 Job,Job 一直处于等待状态,如何解决此问题。

极狐GitLab 为 GitLab 在中国的发行版,中文版本对中国用户更友好。极狐GitLab 支持一键私有化部署,可以在 ubuntu、centos、Debian、Docker、Kubernetes 上灵活安装。安装详情可以查看极狐GitLab 官网

故障背景

使用 Helm 安装了一个极狐GitLab Runner,从 Runner 的管理界面看 Runner 处于工作状态

file

在 Kubernetes 后台查看,Runner 的运行也正常

kubectl  -n jh-gitlab-runner get pods
NAME                                              READY   STATUS    RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm   1/1     Running   0          157m

在项目中添加 .gitlab-ci.yml文件后,自动触发了 CI/CD 流水线,但是 Job 却一直处在等待状态

file

故障排查

起初没有在意这个状态,因为自部署的 runner,有时候刚开始是会出现等待中的状态,但是等了一会儿发现不对劲,一直在等待,查看 kubernetes 后台,也没见运行 Job 的动态 pod 生成。于是查看 Runner 的 pod 日志,也没发现异常:

kubectl  -n jh-gitlab-runner logs -f jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm
Added job to processing list                        builds=1 job=7 max_builds=10 project=2 repo_url=http://jhma.jihulab.net/root/kubernetes-agent.git time_in_queue_seconds=15
Appending trace to coordinator...ok                 code=202 job=7 job-log=0-805 job-status=running runner=xRnstJB7U sent-log=0-804 status=202 Accepted update-interval=1m0s
Job succeeded                                       duration_s=9.472339120000001 job=7 project=2 runner=xRnstJB7U
Appending trace to coordinator...ok                 code=202 job=7 job-log=0-2737 job-status=running runner=xRnstJB7U sent-log=805-2736 status=202 Accepted update-interval=1m0s
Updating job...                                     bytesize=2737 checksum=crc32:2043b475 job=7 runner=xRnstJB7U
Submitting job to coordinator...ok                  bytesize=2737 checksum=crc32:2043b475 code=200 job=7 job-status=success runner=xRnstJB7U update-interval=0s
Removed job from processing list                    builds=0 job=7 max_builds=10 project=2 repo_url=http://jhma.jihulab.net/root/kubernetes-agent.git time_in_queue_seconds=15

然后怀疑是 Runner 突然“卡壳”,用 SRE 的行为准则对 Runner 进行了重启,重启之后还是一样的效果。这时候突然,脑子里灵光一现 Runner 是否接受 Job,是有一个标签选项的。标签选项是 Runner 的一个重要功能,主要是方便用户自行分配 Runner 的使用,这样就能让 Runner 的使用效率变得更高。

于是点击查看了 Runner 的配置,一看配置还真是:

在这里插入图片描述

有一个选项运行未打标签的作业,这个选项并未勾选。根据字面意思就能理解这个选项的重要性了:如果这个选项未勾选,那么 Runner 就不会运行没有打标签的 Job,说直白点就是,如果你的 .gitlab-ci.yml文件中用到了 tag 这个关键字,那么就意味着你的 CI/CD 使用了标签。这个标签要和 Runner 严格匹配,Runner 才会执行此作业。

我查看了一下 .gitlab-ci.yml文件中的描述,并没有使用 tag,也就是说没有使用标签。这个时候就确定了,该问题就是由于此选项没有勾线所致,因此立马勾选了此选项,然后进行了配置保存。

然后就看到 Job 开始运行了,并且运行成功

在这里插入图片描述

在 Kubernetes 后台也看到了动态生成了 pod,然后执行完 Job 之后,pod 自动被删除

 kubectl  -n jh-gitlab-runner get pods
NAME                                               READY   STATUS     RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm    1/1     Running    0          20m
runner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   0/2     Init:0/1   0          1s
root@xiaomage:/home/xiaomage/runner# kubectl  -n jh-gitlab-runner get pods
NAME                                               READY   STATUS            RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm    1/1     Running           0          20m
runner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   0/2     PodInitializing   0          2s
root@xiaomage:/home/xiaomage/runner# kubectl  -n jh-gitlab-runner get pods
NAME                                               READY   STATUS            RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm    1/1     Running           0          20m
runner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   0/2     PodInitializing   0          3s
root@xiaomage:/home/xiaomage/runner# kubectl  -n jh-gitlab-runner get pods -w
NAME                                               READY   STATUS            RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm    1/1     Running           0          20m
runner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   0/2     PodInitializing   0          4s
runner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   2/2     Running           0          4srunner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   2/2     Terminating       0          9s
^Croot@xiaomage:/home/xiaomage/runner# kubectl  -n jh-gitlab-runner get pods
NAME                                               READY   STATUS        RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm    1/1     Running       0          21m
runner-xrnstjb7u-project-2-concurrent-0-y0idxyf2   2/2     Terminating   0          25s

故障总结

Runner 对于极狐GitLab CI/CD 来讲是非常重要的,很多时候自建的 Runner 能够有更大的灵活性来运行流水线,但是往往一个小小的配置就能够阻塞整个工作,排查的过程还是要有章法,首先应该从配置入手,查看有些配置是否正确,其次要多看日志,从日志中发现问题,最后也是最重要的多看官网文档、多练习,只有对 GitLab 懂的越多,故障排查也才越快。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用Qt 对接‌百度语音识别接口
  • Altium designer布线技巧
  • 在字节跳动干了3年网络安全工程师,网络工程师30岁以后还有企业要吗
  • 机器学习和深度学习存在显著区别
  • CentOS Stream 8 通过 Packstack 安装开源 OpenStack(V版)
  • 60. n 个骰子的点数【难】
  • 裸金属服务器怎么实现算力共享,裸金属服务器提供者怎么做,租户怎样使用,共享平台需要搭建什么
  • 深入理解Appium定位策略与元素交互
  • FISC安全対策基準
  • 网络工程师考试真题及解析
  • 代码随想录算法训练营第28天 | 第九章动态规划 part01
  • 深度解读:从新手到专业,大模型开发者知识技能养成之路
  • 大数据开发:可视化组件Redash安装部署
  • Linux df命令详解,Linux查看磁盘使用情况
  • 力扣: 翻转字符串里的单词
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • android 一些 utils
  • Android单元测试 - 几个重要问题
  • Angular2开发踩坑系列-生产环境编译
  • docker python 配置
  • Docker下部署自己的LNMP工作环境
  • Iterator 和 for...of 循环
  • JavaScript的使用你知道几种?(上)
  • Joomla 2.x, 3.x useful code cheatsheet
  • js继承的实现方法
  • Markdown 语法简单说明
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 程序员最讨厌的9句话,你可有补充?
  • 关于extract.autodesk.io的一些说明
  • 跨域
  • 线性表及其算法(java实现)
  • 消息队列系列二(IOT中消息队列的应用)
  • 运行时添加log4j2的appender
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​如何防止网络攻击?
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (阿里云万网)-域名注册购买实名流程
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二十六)Java 数据结构
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)汇编语言——简单程序
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)c++ std::pair 与 std::make
  • (转)我也是一只IT小小鸟
  • ****三次握手和四次挥手
  • .htaccess 强制https 单独排除某个目录
  • .net 4.0发布后不能正常显示图片问题
  • .net dataexcel 脚本公式 函数源码
  • .NET Micro Framework初体验(二)