代码之家  ›  专栏  ›  技术社区  ›  ZedTuX

Kubernetes+Gitlab CI artefacts:我应该使用什么样的卷?

  •  1
  • ZedTuX  · 技术社区  · 6 年前

    我的Kubernetes集群中有一个正在运行的Gitlab CI管道。

    当测试失败时,我需要从运行应用程序的pod中抓取应用程序的屏幕截图和日志,以便在Gitlab运行人员期望的地方可以使用它们。

    我试过了 kubectl cp <namespace>/<podname>:/in-pod-path /local/path 从停止的pod复制文件(具有 tar 命令安装在我的Docker映像中),但是 it isn't yet supported .

    在这可用之前,我想我需要一个安装在pod中的卷,它位于保存我的人工制品的路径上,这样我就可以在测试执行完成后从这个卷中获取它们。

    我在想 我应该使用什么样的音量 知道我有3个kube Worker,我不需要随着时间的推移保持这个卷,更多的卷需要在节点之间共享?

    我希望在部署运行我的测试的pod之前部署这个卷。当检测到测试失败时,我会将人工制品提取到正确的位置,并删除pod和卷。

    1 回复  |  直到 6 年前
        1
  •  1
  •   VonC    6 年前

    你可以尝试用访问模式定义一个PVC ReadWriteMany ,以便在多个播客之间共享卷。
    看“ How to share storage between Kubernetes pods? "

    它仍然是一个持久卷(为了支持它),所有的pod都被安排到具有该卷的节点上。

    有几种卷类型适用于此,并且不与任何云提供商绑定:

    • NFS
    • RBD(Ceph闭锁装置)
    • CEPFS
    • Glusterfs
    • Portworx卷

    但是:

    我真的不需要在多个豆荚之间共享音量,我可以创建每个豆荚的音量。
    我希望避免安装/配置您提供的列表中的节点共享卷服务。
    我在找一个 短暂体积 如果可能的话?

    然后 ephemeral storage 有可能:

    Kubernetes 1.8版引入了一种新资源,即临时存储,用于管理本地临时存储。在每个Kubernetes节点中,kubelets根目录( /var/lib/kubelet 默认情况下)和日志目录( /var/log )存储在节点的根分区上。
    这个分区也由Pods通过共享和使用 emptyDir 卷、容器日志、图像层和容器可写层。

    在你的情况下,你需要一个 runtime ephemeral storage .