【问题标题】:share volume between agent block in jenkins k8sjenkins k8s 中代理块之间的共享量
【发布时间】:2021-05-19 07:36:17
【问题描述】:

我们有一个看起来像这样的詹金斯管道

pipeline {
    agent {
        kubernetes {
            inheritFrom 'default'
            yamlFile 'pipeline_agent.yaml'
        }
    }
    stages {
        stage('build backend') { ... }
        stage('build frontend') { ... }
        stage('combine to jar file') { ... }
        stage('test') { ... }
    }
}

我们的pipeline_agent.yaml 然后包含所有不同阶段的容器,因此一个用于使用 gradle 构建,一个用于构建前端的节点,一个用于测试的单独自定义容器,等等。

所以这个“有效”并且输出很好,但问题是我们提供了很多资源,这些资源在管道的整个持续时间内都没有使用。

例如,最好释放所有未使用的容器,然后增加test 阶段的资源请求。

但我不完全确定该怎么做。 我可以在每个阶段添加一个代理块,然后我可以根据需要配置容器,但是我认为我不能在它们之间共享数据/构建输出。

是否有任何“标准”或好的方式来进行这种动态配置?

【问题讨论】:

    标签: jenkins kubernetes jenkins-pipeline


    【解决方案1】:

    我认为最好的方法是在每个阶段都有一个代理块,在作业完成后释放容器。至于在容器之间共享数据,您可能希望使用安装在每个容器中的共享持久卷。这可以通过NFS server provisioner来实现

    NFS 服务器配置器将创建持久卷(Local 应该适用于您的情况)和 NFS 存储类。然后,您的代理 pod 可以挂载并共享此存储类提供的卷。

    【讨论】:

      【解决方案2】:

      在 pod 中的容器之间进行临时卷共享的最佳且简单的方法是使用 EmptyDir

      Communicate Between Containers in the Same Pod Using a Shared Volume

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-16
        • 2014-11-13
        • 1970-01-01
        • 2020-06-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多