hello云胜

技术与生活

0%

报错

使用kubesphere流水线过程中,遇到一个奇葩问题。偶尔会有几个任务执行失败。

报错如下:

1
2
3
4
+ mvn clean package -Dmaven.test.skip=true -Ptest
Error: missing `server' JVM at `/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.i386/jre/lib/i386/server/libjvm.so'.
Please install or use the JRE or JDK that contains these missing components.
script returned exit code 4

因为是同样的代码,偶尔发生,所以基本排除是代码问题。

在网上发现同样的报错,有文章说是服务器文件系统是xfs,并且磁盘超过1T的情况下,会触发操作系统bug。

经过复现,发现当流水线调度到某台机器确实会失败,查看这台机器配置如下

image-20240711145404837

centos 7.9.2009

Cenos 7文件系统默认使用XFS格式

当调度到的服务器满足以下条件。文件系统格式是xfs,且挂载点磁盘大小超过1T

会触发这个bug

解决

查看pod的yaml,发现已经配置了node亲和

1
2
3
4
5
6
7
8
9
10
11
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: node-role.kubernetes.io/worker
operator: In
values:
- ci
weight: 1

找了几台磁盘小于1T的,打上标签

1
kubectl label node t-paas-k8s-0-node-5 node-role.kubernetes.io/worker=ci --overwrite

避坑

这是个坑啊,跑jenkins流水线的机器,不要用xfs文件格式。或者磁盘不要超过1T。