首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有擦除集装箱数据的情况下,在码头集装箱中安装kubernetes体积

在没有擦除集装箱数据的情况下,在码头集装箱中安装kubernetes体积
EN

Stack Overflow用户
提问于 2019-10-18 07:20:24
回答 1查看 925关注 0票数 0

我正在使用kubernetes插件在jenkins上安装一个管道来编译一些代码。

我的目标:

在这个管道中,我尝试从一个坞容器中访问一些数据,以便在一秒钟内将它用作缓存(如下面所示)。

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: cache-test
spec:
  restartPolicy: Never
  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: cache-container
    image: cache:latest
    volumeMounts:
    - name: shared-data
      mountPath: /cache
    command: 
      - cat


  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: 
      - cat

问题:

我的问题是,当我在shared-folder中直接挂载/cache时,我的所有数据都会被擦除(覆盖)。

工作:

其中一项工作是创建一个中间目录,在其中我可以复制数据:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: cache-test
spec:
  restartPolicy: Never
  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: cache-container
    image: cache:latest
    volumeMounts:
    - name: shared-data
      mountPath: /shared-folder
    command: 
      - cat


  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /pod-data
    command: 
      - cat

在我的Jenkins管道中添加以下步骤:

代码语言:javascript
复制
          container('cache-container') {
                sh """#!/usr/bin/env bash
                set -exu
                cp -r /cache/* /shared-folder
                """
              } // container

问题:

有办法避免这个复制步骤吗?也许库伯内特斯卷设置不覆盖容器中的内容?我翻阅了几遍文件,没有发现任何东西。

EN

回答 1

Stack Overflow用户

发布于 2021-06-21 21:23:00

如果不将数据复制到与其他容器共享的卷中,就不能将容器用作缓存。但无论如何你都不应该。

您可能希望将缓存从容器中移出并使其成为PersistentVolume。PersistentVolumeClaims可以声明 PV,然后pods可以安装这些。

PVs的问题,不管它们是静态的还是动态的--当先前的锁定PVC被删除时,它们不会是Available。他们将被困在Released州。Kubernetes没有自动完成这个任务是有原因的--工作负载不应该访问其他工作负载的数据。因为当他们这样做的时候--古伯奈特的惯用方法是StatefulSets,所以Kubernetes保证只有相同工作负载的副本才能声明旧的数据。不幸的是,它只是不适用于构建缓存。

我编写了两个简单的控制器--自动PV发布器(它将再次为新的PVC找到并使Released PVs Available )和动态PVC提供程序(特别是为Jenkins插件)--这样您就可以将PVC定义为Pod上的注释。看看这里,https://github.com/plumber-cd/kubernetes-dynamic-reclaimable-pvc-controllers。这里有一个完整的Jenkinsfile示例,https://github.com/plumber-cd/kubernetes-dynamic-reclaimable-pvc-controllers/tree/main/examples/jenkins-kubernetes-plugin-with-build-cache

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58445811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档