You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes Pod型Jenkins Slave节点中运行kubectl?

在Jenkins Kubernetes Slave里运行kubectl的几种可行方案

方案一:新增带kubectl的专用容器(最推荐)

直接在你的podTemplate里添加一个预装kubectl的容器即可,这种方式隔离性好,不会污染现有容器环境,也无需额外安装步骤。

修改后的完整Jenkinsfile示例:

podTemplate(yaml: """
apiVersion: v1
kind: Pod
metadata:
  namespace: jenkins
spec:
  containers:
  - name: maven
    image: maven:latest
    command:
    - cat
    tty: true
  - name: node
    image: node:16-alpine3.12
    command:
    - cat
    tty: true
  - name: kubectl
    image: bitnami/kubectl:latest  # 也可使用kubernetes官方镜像k8s.gcr.io/kubectl:latest
    command:
    - cat
    tty: true
"""
)  

{
  node(POD_LABEL) {
    stage('Build Petclinic Java App') {
      git url: 'https://github.com/spring-projects/spring-petclinic.git', branch: 'main'
      container('maven') {
        sh 'mvn -B -ntp clean package -DskipTests'
      }
    }
    stage('Run on Node') {
      container('node') {
        sh 'npm version'
      }
    }
    stage('Deploy to Kubernetes') {
      container('kubectl') {
        sh 'kubectl version --client'
        # 这里替换成你的部署命令,比如kubectl apply -f your-deployment.yaml
      }
    }
  }
}

注意:需要给Jenkins Slave使用的ServiceAccount分配足够的K8s权限,比如通过Role和RoleBinding配置允许创建Deployment、Service等资源的权限,否则kubectl会抛出权限不足的错误。

方案二:在现有容器里临时安装kubectl

如果不想新增容器,也可以在maven或node容器内临时安装kubectl,但会增加容器启动时间,且会污染现有容器环境。

比如在debian系的maven容器中安装:

stage('Build & Setup Kubectl') {
  container('maven') {
    sh '''
      curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
      chmod +x kubectl
      mv kubectl /usr/local/bin/
      kubectl version --client
    '''
    sh 'mvn -B -ntp clean package -DskipTests'
  }
}

如果是alpine系的node容器,安装命令替换为:

apk add --no-cache curl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/local/bin/

方案三:挂载kubectl二进制文件到jnlp容器(不推荐)

可以通过Volume将集群节点上的kubectl二进制文件挂载到jnlp容器中,但这种方式依赖集群节点的kubectl版本,维护成本高,除非特殊场景不建议使用。


内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:53:18