AWS EKS kubernetes群集中的守护进程不支持docker buildkit

AWS EKS kubernetes群集中的守护进程不支持docker buildkit,docker,jenkins,kubernetes,terraform,docker-buildkit,Docker,Jenkins,Kubernetes,Terraform,Docker Buildkit,我正在使用构建工具包为每个微服务构建docker映像 /build.sh export DOCKER_BUILDKIT=1 # .... docker build -t .... # ... 这在我的机器上与docker一起工作(18.09.2) 但是,Jenkins无法使用它,我将其设置为: EKS配备了地形模块 module "eks" { source = "terraform-aws-modules/eks/aws" version = "5.0.0" # ...

我正在使用构建工具包为每个微服务构建docker映像

/build.sh

export DOCKER_BUILDKIT=1
# ....
docker build -t ....
# ... 
这在我的机器上与docker一起工作(18.09.2)

但是,Jenkins无法使用它,我将其设置为:

  • EKS配备了地形模块

    module "eks" {
      source   = "terraform-aws-modules/eks/aws"
      version  = "5.0.0"
      # ....
    }
    
  • Jenkins部署在EKS上(
    v1.12.10-EKS-ffbd9
    docker://18.6.1
    )通过此

  • Jenkins插件在helm版本的值中定义:

    • 库伯内特斯:1.18.1
    • 工作流程作业:2.33
    • 工作流聚合器:2.6
    • 凭证绑定:1.19
    • 吉特:3.11.0
    • 蓝海:1.19.0
    • 比特桶oauth:0.9
  • Jenkins管道是声明性的,它使用一个Pod模板,其中容器图像为
    docker:18 dind
    ,容器名称为
    dind

  • 这是我的詹金斯档案

    pipeline {
      agent {
        kubernetes {
          defaultContainer 'jnlp'
          yamlFile 'jenkins-pod.yaml'
        }
      }
      stages {
        stage('Build Backends') {
          steps {
            container('dind') {
              sh 'chmod +x *sh'
              sh './build.sh -t=dev'
            }
            containerLog 'dind'
          }
        }
      }
    
    }

Jenkins执行此管道时,会显示以下错误:

buildkit not supported by daemon
我不确定应该升级哪个软件以使docker buildkit正常工作?哪个版本

  • Terraform eks模块现在是5.0.0

  • docker:18丁的形象,表现得像短暂的詹金斯奴隶的环境

  • Jenkins插件
    kubernetes:1.18.1
根据启动
buildkit
会话的要求,成功检查
isSessionSupported
有两个要求:

  • dockerli.ServerInfo()
  • versions.GreaterThanOrEqualTo(dockerli.Client().ClientVersion(),“1.31”
因此:

  • 检查
    docker cli
    库的版本
  • 并且
    HasExperimental
    选项已启用
要检查它是否具有Experimantal支持,您可以从shell运行:


docker版本-f'{.Server.Experimental}}

docker buildkit支持在18.09中从实验版本中推出,因此您可能需要升级EKS内部的docker:

EKS(v1.12.10-EKS-ffbd9,docker://18.6.1


或者您可能有一个旧的dind图像(18 dind的
18
应该足够新,但是指向18.06或18.03的较旧版本的标签不会)。您可以尝试
18.09-dind
19-dind
,如果构建实际上发生在dind中,这两种方法都应该有效。

您可以在
/build.sh
中尝试
DOCKER\u BUILDKIT=1 DOCKER build-t...