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

news2024/12/25 10:12:43

本分分享 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          4s


runner-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 懂的越多,故障排查也才越快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2130672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux arm-linux-gcc 内核编译

1.下载 arm-linux-gcc 4.4.3版本后更新路径 sudo vim /home/linux/.bashrc 的最后一行加入路径 或者 sudo vim /erc/profile 最后一行加路径 如果使用第一个改,则注释掉第二个的最后一行的旧的arm-linux-gcc 的路径 版本更新好后,使用编译可能还有错误&a…

如何评估一个RAG(检索增强生成)系统-上篇

最近项目中需要评估业务部门搭建的RAG助手的效果好坏,看了一下目前业界一些评测的方法。目前分为两大类,基于传统的规则、机器学习的评测方法,基于大模型的评测方法。在这里做一些记录,上篇主要做评测方法的记录,下篇会…

盘点2024年大家都在用的录屏工具

现在录屏工具的使用范围越来越广了。我的深切体验是有很多人愿意为知识付费了,但是到线下培训的话很多人时间不一定能协调的来,这就导致涌现了不少的录屏课程。这次我们来探讨下要怎么录屏才能呈现更好的效果。 1.福昕录屏大师 链接达达:ww…

基于 ROS 的Terraform托管服务轻松部署Stable Diffusion

介绍 Stable Diffusion是文本到图像的潜在扩散模型,它可以根据文本提示词生成对应的图像。Stable Diffusion模型是扩散模型的变种,可以通过逐步对随机高斯噪声进行去噪以获得感兴趣的样本。与传统生成模型相比,Stable Diffusion可以在不需要…

数据结构修炼——时间复杂度?空间复杂度?教你如何衡量算法的优劣!!

目录 一、关于复杂度二、时间复杂度1 概念2 大O的渐进表示法3 练习3.1 练习13.2 练习23.3 练习33.4 练习43.5 练习53.6 练习6 三、空间复杂度1 概念2 练习2.1 练习12.2 练习22.3 练习32.4 练习4 小结 一、关于复杂度 算法在编写成可执行程序后,运行时需要耗费时间资…

C++ | Leetcode C++题解之第402题移掉K位数字

题目&#xff1a; 题解&#xff1a; class Solution { public:string removeKdigits(string num, int k) {vector<char> stk;for (auto& digit: num) {while (stk.size() > 0 && stk.back() > digit && k) {stk.pop_back();k - 1;}stk.push_b…

神经网络多层感知器异或问题求解-学习篇

多层感知器可以解决单层感知器无法解决的异或问题 首先给了四个输入样本&#xff0c;输入样本和位置信息如下所示&#xff0c;现在要学习一个模型&#xff0c;在二维空间中把两个样本分开&#xff0c;输入数据是个矩阵&#xff0c;矩阵中有四个样本&#xff0c;样本的维度是三维…

以太坊学习

以太坊原理书 区块链的一些基础概念 账户是什么 以太坊的账户共分成两类&#xff0c;外部账户 (Externally Owned Account, EOA ) 与 智能合约 (Contract Account, CA )。 外部账户由 一把私钥 与该私钥对应的公开地址来表示&#xff0c;是普通用户的账户。智能合约账户 没…

一、SpringBoot自动装配原理

目录 一、背景二、原理 一、背景 在Spring的时候&#xff0c;如果我们需要引进一些第三方依赖&#xff0c;还行需要写一些配置类或者xml文件对第三方依赖进行配置。在SpringBoot之后&#xff0c;我们只需要引入这些第三方依赖的一个starter&#xff0c;然后在application.yaml…

pip install速度太慢的多种解决方案

目录 问题描述为什么 pip 速度这么慢&#xff1f;解决方案1. 使用国内镜像源2. 配置多个镜像源3. 使用第三方工具4. 手动下载后本地安装5. 优化网络环境6. 更新 pip 版本 测试效果 问题描述 在使用 Python 进行开发时&#xff0c;我们经常需要使用 pip 来安装第三方库。然而&am…

图片详解,最简单易懂!!!Ubuntu增强功能

文章目录 共享粘贴板共享文件夹vim 共享粘贴板 双击 输入认证用户密码 显示这个界面 命令行界面 reboot就会重新启动 虚拟机 设置下面的选项&#xff0c;就可以实现共享粘贴 共享文件夹 先在本机&#xff08;windows&#xff09;新建一个共享文件夹 再在ubuntu建一个共…

minio的下载和springboot整合minio使用

下载minio 基于docker拉取minio镜像 docker pull minio/minio 创建minio容器 先创建/root/minio/data 和 /root/minio/conf docker run -d -p 9000:9000 -p 9001:9001 --name minio \ -e "MINIO_ROOT_USERhtsdg" \ -e "MINIO_ROOT_PASSWORD12345678" \ -v…

CTK框架(十):PluginAdmin插件

目录 1.引言 2.实现原理 3.实际应用 3.1.界面控制 3.2.访问服务管理插件 4.总结 1.引言 在CTK框架(三): 插件的安装讲解了插件的安装、启动、停止和卸载方法&#xff0c;对于一个插件可以这样写&#xff1b;但是如果是在一个大型的应用程序中&#xff0c;里面有很多插件&…

Android SPN/PLMN 显示逻辑简介

功能描述 当设备驻网后(运营商网络),会在状态栏、锁屏界面、下拉控制中心显示运营商的名称。 此名称来源有两种: 1、SPN(Service Provider Name) 2、PLMN (Public Land Mobile Name) 功能AOSP默认逻辑SPN提供SIM卡的运营商名称预置在SIM EF中,SIM卡发行运营商名称…

GESP等级考试C++二级-ASCII码与字符

1 ASCII码介绍 ASCII码是American Standard Code for Information Interchange&#xff0c;即美国标准信息交换码的简称。 ASCII码的主要功能是将键盘上输入的字符&#xff08;如数字、字母、特殊符号等&#xff09;转换为计算机能够识别的二进制数&#xff0c;即每个字符都对…

Java 每日一刊(第5期):变量守护者

前言 这里是分享 Java 相关内容的专刊&#xff0c;每日一更。 本期将为大家带来以下内容&#xff1a; 量子数据宇宙的变量守护者第一章&#xff1a;能源错配与基本数据类型第二章&#xff1a;引用类型与通讯网络的崩溃第三章&#xff1a;作用域冲突与系统崩溃终章&#xff1…

C++的流提取(>>)(输入) 流插入(<<)(输出)

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 什么是输入和输出流 流提取&#xff08;<<&#xff09;(输入) 理解&#xff1a;我们可以理解为&#xff0c;输入到io流里面&#xff0c;比如是cin&…

数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值特殊矩阵的压缩存储

文章目录 栈的应用1.栈的括号匹配代码实战:问题分析:2.栈的表达式求值2.1 中缀、后缀、前缀表达式2.2 中缀表达式改写为后缀表达式(手算)2.3 后缀表达式的计算(手算)2.4 中缀表达式转前缀表达式&#xff08;手算)和计算前缀表达式2.5后缀表达式的计算(机算)2.6 中缀表达式转后缀…

win10+eclipse+ESP8266_RTOS_SDK开发环境构建

官网教程 https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/eclipse-setup.html 1. 导入工程 Build and Flash with Eclipse IDE — ESP8266 RTOS SDK Programming Guide documentation (espressif.com) 导入整个SDK&#xff0c;便于查看所有代…

网络安全 day6 --- 抓包技术HTTPS协议小程序PC应用WEB转发联动

免责声明 本免责声明适用于作者所有文章内容。使用者需明确&#xff0c;网络安全技术仅供学习和合法研究使用&#xff0c;不得用于任何非法活动&#xff0c;如未经授权的入侵、攻击或数据窃取&#xff0c;所有相关法律责任由使用者自行承担。由于网络安全操作可能带来系统崩溃、…