gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:31:24 26 4
gpt4 key购买 nike

我正在使用 Build Toolkit 为每个微服务构建 docker 镜像。

./build.sh

export DOCKER_BUILDKIT=1
# ....
docker build -t ....
# ...

这适用于我的带有 docker (18.09.2) 的机器。

但是,它不适用于 Jenkins,我设置如下:
  • EKS 配备了 Terraform 模块
    module "eks" {
    source = "terraform-aws-modules/eks/aws"
    version = "5.0.0"
    # ....
    }
  • Jenkins 通过这个 Helm Chart 部署在 EKS ( v1.12.10-eks-ffbd9 , docker://18.6.1 ) 上.
  • helm release 中定义的 Jenkins 插件:
  • Kubernetes:1.18.1
  • 工作流作业:2.33
  • 工作流聚合器:2.6
  • 凭据绑定(bind):1.19
  • 混帐:3.11.0
  • 蓝海:1.19.0
  • bitbucket-oauth:0.9
  • Jenkins Pipeline 是声明性的,它使用容器镜像为 docker:18-dind 的 Pod 模板容器名称为 dind .
  • 这是我的 Jenkins 文件
    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 工作?和哪个版本?
  • 现在是 5.0.0 的 Terraform eks 模块?

  • 或者
  • docker:18-dind 图像,其行为类似于临时 Jenkins 奴隶的环境?

  • 或者
  • Jenkins 插件 kubernetes:1.18.1 ?
  • 最佳答案

    根据docker-ce sources开始buildkit session, 有两个条件才能成功校验isSessionSupported :

  • dockerCli.ServerInfo().HasExperimental
  • versions.GreaterThanOrEqualTo(dockerCli.Client().ClientVersion(), "1.31"

  • 所以:
  • 检查您的 docker-cli 的版本图书馆
  • 并且是 HasExperimental选项启用。

  • 要检查它是否具有实验支持,您可以从 shell 运行: docker version -f '{{.Server.Experimental}}'

    关于AWS EKS kubernetes 集群中的守护进程不支持 docker buildkit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847429/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com