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

Kubernetes 1.24版本下Jenkins镜像构建部署方案咨询

解决方案:EKS 1.24下Jenkins无Docker镜像构建方案

EKS 1.24移除dockershim后,节点不再运行Docker守护进程,挂载/var/run/docker.sock的方式彻底失效。以下是针对Jenkins Kubernetes Pod Agent场景的几种成熟无Docker构建方案:

1. Kaniko(推荐优先使用)

Kaniko是Google开源的无daemon镜像构建工具,直接在容器内完成镜像构建与推送,适配Kubernetes环境,无需特权模式。

修改Jenkins Pod Agent配置

替换原有docker容器为Kaniko容器,无需挂载docker sock:

agent {
    kubernetes {
      defaultContainer 'jnlp'
      yaml '''
apiVersion: v1
kind: Pod
metadata:
  labels:
    component: ci
spec:
  serviceAccountName: jenkins
  containers:
  - name: kaniko
    image: gcr.io/kaniko-project/executor:latest
    command: ["sleep"]
    args: ["infinity"]
    volumeMounts:
    - name: kaniko-config
      mountPath: /kaniko/.docker
  volumes:
  - name: kaniko-config
    emptyDir: {}
'''
    }
}

镜像构建阶段代码

stage('Create & Tag Image') {
  steps {
    container('kaniko') {
      sh '''
        # 生成ECR认证配置
        aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin <AWS ECR URL> --config /kaniko/.docker/config.json
        
        # 执行构建并推送
        /kaniko/executor \
          --context "$PWD" \
          --dockerfile "$PWD/Dockerfile" \
          --destination "<AWS ECR URL>:latest" \
          --network host
      '''
    }
  }
}

2. Buildah

Buildah是Red Hat开源的OCI镜像构建工具,支持镜像创建、修改、推送等全生命周期操作,灵活性强,但需要特权模式。

修改Jenkins Pod Agent配置

agent {
    kubernetes {
      defaultContainer 'jnlp'
      yaml '''
apiVersion: v1
kind: Pod
metadata:
  labels:
    component: ci
spec:
  serviceAccountName: jenkins
  containers:
  - name: buildah
    image: quay.io/buildah/stable:latest
    command: ["sleep"]
    args: ["infinity"]
    securityContext:
      privileged: true
'''
    }
}

镜像构建阶段代码

stage('Create & Tag Image') {
  steps {
    container('buildah') {
      sh '''
        # 登录ECR
        aws ecr get-login-password --region eu-central-1 | buildah login --username AWS --password-stdin <AWS ECR URL>
        
        # 构建镜像
        buildah bud --tag "<AWS ECR URL>:latest" .
        
        # 推送镜像
        buildah push "<AWS ECR URL>:latest"
      '''
    }
  }
}

3. BuildKit

BuildKit是Docker官方的下一代构建引擎,支持并行构建、缓存优化,适合大型项目。通过工具可直接在Kubernetes集群内启动BuildKit服务。

修改Jenkins Pod Agent配置

agent {
    kubernetes {
      defaultContainer 'jnlp'
      yaml '''
apiVersion: v1
kind: Pod
metadata:
  labels:
    component: ci
spec:
  serviceAccountName: jenkins
  containers:
  - name: buildkitd
    image: moby/buildkit:latest
    command: ["buildkitd"]
    args: ["--addr", "tcp://0.0.0.0:1234"]
    securityContext:
      privileged: true
  - name: buildkit-cli
    image: alpine/k8s:latest
    command: ["sleep"]
    args: ["infinity"]
    env:
    - name: BUILDKIT_HOST
      value: tcp://buildkitd:1234
'''
    }
}

镜像构建阶段代码

stage('Create & Tag Image') {
  steps {
    container('buildkit-cli') {
      sh '''
        # 登录ECR
        aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin <AWS ECR URL>
        
        # 启动构建并推送
        buildctl build \
          --frontend dockerfile.v0 \
          --local context=. \
          --local dockerfile=. \
          --output type=image,name="<AWS ECR URL>:latest",push=true
      '''
    }
  }
}

方案选型参考

  • Kaniko:无特权需求、配置简单,适合绝大多数Jenkins CI场景,优先推荐。
  • Buildah:镜像操作灵活,适合需要修改现有镜像、多阶段复杂构建的场景。
  • BuildKit:构建性能优异,支持缓存加速,适合大型项目或高频构建场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:05:27