shuangyueban 2025-07-12 12:03 采纳率: 0%
浏览 20

流水线中bitnami/kubectl镜像使用的问题

#jenkins
#kubernetes
#pipeline

流水线卡在sh那里不动了,执行不了sh里面的命令,但是我通过终端进去容器内部执行都一切正常,是哪里出问题了,麻烦帮我看看

pipeline {
    agent {
        kubernetes {
            // 定义一个Pod模板
            yaml """
apiVersion: v1
kind: Pod
spec:
  serviceAccountName: jenkins-qygoydxwa9a
  containers:
  - name: jnlp
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/inbound-agent:3309.v27b_9314fd1a_4-7
    tty: true
    env:
    - name: JENKINS_URL
      value: http://jenkins-qygoydxwa9a.jenkins.svc.cluster.local:8080/

  - name: kubectl
    image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.33.1
    command:
    - cat
    tty: true
"""
        }
    }
    stages {
        stage('部署到 Kubernetes') {
            steps {
                container('kubectl') {
                    // 2. 使用 withKubeConfig 并传入正确的凭据ID字符串
                    withKubeConfig(credentialsId: 'kubeconfig') {
                        sh 'kubectl version --client'
                        sh 'echo "--- Listing pods in all namespaces ---"'
                        sh 'kubectl get pods -A'
                    }
                }
            }
        }
    }
}

Running on test-k8s-2-j2d12-zb3mw-vnjh3 in /home/jenkins/agent/workspace/test-k8s
[Pipeline] {
[Pipeline] stage
[Pipeline] { (部署到 Kubernetes)
[Pipeline] container
[Pipeline] {
[Pipeline] withKubeConfig
[kubernetes-cli] creating missing workspace to write temporary kubeconfig
[Pipeline] {
[Pipeline] sh
process apparently never started in /home/jenkins/agent/workspace/test-k8s@tmp/durable-bd126789
(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true might make the problem clearer)
[Pipeline] }
[kubernetes-cli] kubectl configuration cleaned up
[Pipeline] // withKubeConfig
[Pipeline] }
[Pipeline] // container
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
Agent test-k8s-2-j2d12-zb3mw-vnjh3 was deleted, but do not have a node body to cancel
[Pipeline] // node
[Pipeline] }
[Pipeline] // podTemplate
[Pipeline] End of Pipeline
ERROR: script returned exit code -2
Finished: FAILURE


img

  • 写回答

5条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-07-12 12:17
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。

    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!
     
    若您愿意支持,欢迎直接打赏,将不胜感激!
     

    流水线中bitnami/kubectl镜像使用问题分析

    根据您提供的信息,流水线在执行sh命令时卡住,但手动进入容器执行命令却正常。这个问题通常与容器环境配置或Jenkins执行环境有关。

    问题原因分析

    1. 容器命令配置问题:您使用了command: ['cat']tty: true,这会导致容器启动后只运行cat命令等待输入,而不是保持运行状态。
    1. Jenkins执行环境问题sh命令无法启动,可能是由于容器没有正确配置shell环境或权限问题。

    解决方案

    方案1:修改容器配置

    containers:
    - name: kubectl
      image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.33.1
      command: ['sleep', 'infinity']
      tty: true
    

    方案2:使用更完整的容器镜像

    containers:
    - name: kubectl
      image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.33.1
      command: ['/bin/bash', '-c', 'cat']
      tty: true
    

    方案3:完整修复的Pipeline示例

    pipeline {
        agent {
            kubernetes {
                yaml """
    apiVersion: v1
    kind: Pod
    spec:
      serviceAccountName: jenkins-qygoydxwa9a
      containers:
      - name: jnlp
        image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/jenkins/inbound-agent:3309.v27b_9314fd1a_4-7
        tty: true
        env:
        - name: JENKINS_URL
          value: http://jenkins-qygoydxwa9a.jenkins.svc.cluster.local:8080/
    
    
      - name: kubectl
        image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/bitnami/kubectl:1.33.1
        command: ['sleep', 'infinity']
        tty: true
    """
            }
        }
        stages {
            stage('部署到 Kubernetes') {
                steps {
                    container('kubectl') {
                        script {
                            withKubeConfig(credentialsId: 'kubeconfig') {
                                sh '''
                                    kubectl version --client
                                    echo "--- Listing pods in all namespaces ---"
                                    kubectl get pods -A
                                '''
                            }
                        }
                    }
                }
            }
        }
    }
    

    排查流程

    "开始"

    其他建议

    1. 检查Jenkins工作空间权限:
    ls -la /home/jenkins/agent/workspace/
    
    1. 尝试在Jenkins启动时添加诊断参数:
    java -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true -jar jenkins.war
    
    1. 检查kubectl容器中是否安装了bash:
    kubectl exec -it <pod-name> -c kubectl -- which bash
    

    如果问题仍然存在,请提供Jenkins的完整日志(包含诊断信息)以便进一步分析。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月12日