操作系统信息
例如:虚拟机,CentOS Linux release 7.9.2009 (Core),12C/32G
Kubernetes版本信息
v1.24.3
容器运行时
docker version :v23.0.1
crictl version:v1.6.4
KubeSphere版本信息
v3.3.2
在线安装,使用kk部署k8s集群
安装后创建demo流水线
运行DevOps流水线时出现docker: command not found 日志贴图如下:

贴出我的Jenkinsfile文件如下:
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('拉取代码') {
agent none
steps {
container('maven') {
git(url: 'https://jihulab.com/jiahui-dev/ruoyi-cloud-master.git', credentialsId: 'jihu-gitlab', branch: 'main', changelog: true, poll: false)
sh 'ls -al'
}
}
}
stage('项目编译') {
agent none
steps {
container('maven') {
sh 'pwd'
sh 'mvn clean package -Dmaven.test.skip=true'
sh 'ls'
}
}
}
stage('镜像构建') {
parallel {
stage('构建ruoyi-auth镜像') {
agent none
steps {
container('maven') {
sh 'ls ruoyi-auth/target'
sh 'docker build -t ruoyi-auth:latest -f ruoyi-auth/Dockerfile ./ruoyi-auth/'
}
}
}
}
}
stage('推送镜像至Harbor仓库') {
parallel {
stage('推送ruoyi-auth镜像') {
agent none
steps {
container('maven') {
withCredentials([usernamePassword(credentialsId: 'dev-harbor', usernameVariable: 'DOCKER_USER_VAR', passwordVariable: 'DOCKER_PWD_VAR',)]) {
sh 'echo "$DOCKER_PWD_VAR" | docker login $REGISTRY -u "$DOCKER_USER_VAR" -p "$DOCKER_PWD_VAR"'
sh 'docker tag ruoyi-auth:latest $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-auth:SNAPSHOT-$BUILD_NUMBER'
sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/ruoyi-auth:SNAPSHOT-$BUILD_NUMBER'
}
}
}
}
}
}
stage('项目部署-DEV') {
parallel {
stage('ruoyi-auth - 部署到dev环境') {
steps {
container('maven') {
withCredentials([kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID, variable: 'KUBECONFIG')]) {
sh 'envsubst < ruoyi-auth/deploy/deploy.yml | kubectl apply -f -'
}
}
}
}
}
}
//1、配置全系统的邮件: 全系统的监控
//2、修改ks-jenkins的配置,里面的邮件; 流水线发邮件
stage('发送确认邮件') {
agent none
steps {
mail(to: 'jiahuide0320@gmail.com', subject: '构建结果', body: "构建成功了 $BUILD_NUMBER")
}
}
}
environment {
KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
REGISTRY = '192.168.0.11:30002'
DOCKERHUB_NAMESPACE = 'demo'
APP_NAME = 'ruoyi-cloud-master'
//使用Docker Hub 此处为 Docker Hub 帐户设置的名称
//DOCKER_CREDENTIAL_ID = 'dockerhub-id'
//多分支使用,gitlab账户凭证ID
//GITHUB_CREDENTIAL_ID = 'ptcode-gitlab'
//kubeconfig凭证设置的名称,用于访问运行中的 Kubernetes 集群
//请替换为您的 GitHub 帐户名。例如,如果您的 GitHub 地址是 https://github.com/kubesphere/,则您的 GitHub 帐户名为 kubesphere,也可以替换为该帐户下的 Organization 名称。
//GITHUB_ACCOUNT = 'kubesphere'
//应用名称
//如果使用阿里云,则此处为阿里云项目名
//ALIYUNHUB_NAMESPACE = 'ruoyi-aliyun'
}
//构件时的文件夹名称
parameters {
string(name: 'TAG_NAME', defaultValue: 'ruoyi-building', description: '构建目录')
}
}
贴出执行过程:

贴出流水线编辑

贴出日志片段:

也从社区中寻找了答案 根据这个大佬的帖子 帖子入口 描述 我查看了自己的jenkins.yaml jenkins_user.yaml 配置文件,发现CM 中的 jenkins.yaml 和 jenkins_user.yaml 文件,发现 jenkins.yaml 文件中的 maven 标签对应的privileged: true
且 镜像都为kubesphereio/builder-maven:v3.2.0-podman版本
贴出配置maven容器:
jenkins.yaml如下:
- name: "maven"
namespace: "kubesphere-devops-worker"
label: "maven"
nodeUsageMode: "EXCLUSIVE"
idleMinutes: 0
containers:
- name: "maven"
image: "registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.2.0-podman"
command: "cat"
args: ""
ttyEnabled: true
privileged: true
resourceRequestCpu: "100m"
resourceLimitCpu: "4000m"
resourceRequestMemory: "100Mi"
resourceLimitMemory: "8192Mi"
- name: "jnlp"
image: "registry.cn-beijing.aliyuncs.com/kubesphereio/inbound-agent:4.10-2"
args: "^${computer.jnlpmac} ^${computer.name}"
resourceRequestCpu: "50m"
resourceLimitCpu: "500m"
resourceRequestMemory: "400Mi"
resourceLimitMemory: "1536Mi"
workspaceVolume:
emptyDirWorkspaceVolume:
memory: false
volumes:
- hostPathVolume:
hostPath: "/var/run/docker.sock"
mountPath: "/var/run/docker.sock"
- hostPathVolume:
hostPath: "/var/data/jenkins_maven_cache"
mountPath: "/root/.m2"
- hostPathVolume:
hostPath: "/var/data/jenkins_sonar_cache"
mountPath: "/root/.sonar/cache"
yaml: |
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: node-role.kubernetes.io/worker
operator: In
values:
- ci
tolerations:
- key: "node.kubernetes.io/ci"
operator: "Exists"
effect: "NoSchedule"
- key: "node.kubernetes.io/ci"
operator: "Exists"
effect: "PreferNoSchedule"
containers:
- name: "maven"
resources:
requests:
ephemeral-storage: "1Gi"
limits:
ephemeral-storage: "10Gi"
volumeMounts:
- name: config-volume
mountPath: /opt/apache-maven-3.5.3/conf/settings.xml
subPath: settings.xml
volumes:
- name: config-volume
configMap:
name: ks-devops-agent
items:
- key: MavenSetting
path: settings.xml
securityContext:
fsGroup: 1000
jenkins_user.yaml如下:
- name: "maven"
namespace: "kubesphere-devops-worker"
label: "maven"
nodeUsageMode: "EXCLUSIVE"
idleMinutes: 0
containers:
- name: "maven"
image: "registry.cn-beijing.aliyuncs.com/kubesphereio/builder-maven:v3.2.0-podman"
command: "cat"
args: ""
ttyEnabled: true
privileged: true
resourceRequestCpu: "100m"
resourceLimitCpu: "4000m"
resourceRequestMemory: "100Mi"
resourceLimitMemory: "8192Mi"
- name: "jnlp"
image: "registry.cn-beijing.aliyuncs.com/kubesphereio/inbound-agent:4.10-2"
args: "^${computer.jnlpmac} ^${computer.name}"
resourceRequestCpu: "50m"
resourceLimitCpu: "500m"
resourceRequestMemory: "400Mi"
resourceLimitMemory: "1536Mi"
workspaceVolume:
emptyDirWorkspaceVolume:
memory: false
volumes:
- hostPathVolume:
hostPath: "/var/run/docker.sock"
mountPath: "/var/run/docker.sock"
- hostPathVolume:
hostPath: "/var/data/jenkins_maven_cache"
mountPath: "/root/.m2"
- hostPathVolume:
hostPath: "/var/data/jenkins_sonar_cache"
mountPath: "/root/.sonar/cache"
yaml: |
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: node-role.kubernetes.io/worker
operator: In
values:
- ci
tolerations:
- key: "node.kubernetes.io/ci"
operator: "Exists"
effect: "NoSchedule"
- key: "node.kubernetes.io/ci"
operator: "Exists"
effect: "PreferNoSchedule"
containers:
- name: "maven"
resources:
requests:
ephemeral-storage: "1Gi"
limits:
ephemeral-storage: "10Gi"
volumeMounts:
- name: config-volume
mountPath: /opt/apache-maven-3.5.3/conf/settings.xml
subPath: settings.xml
volumes:
- name: config-volume
configMap:
name: ks-devops-agent
items:
- key: MavenSetting
path: settings.xml
securityContext:
fsGroup: 1000
现在社区中也没有找到合适针对此问题的解决方案,烦请各位大佬们伸出援助之手,帮忙探讨解决一下这个问题,小生感激涕零.