在Kubernetes中用于持久数据的正确卷类型是什么?

时间:2017-03-15 13:15:35

标签: jenkins kubernetes

我在kubernetes上设置Jenkins。我目前的部署如下:

    spec:
        containers:
            - name: jenkins-master
              image: jenkins:1.0
              ports:
                  - containerPort: 8080
                    name: http
              volumeMounts:
                  - mountPath: /var/jenkins_home
                    name: jenkins-home
        volumes:
            - name: jenkins-home
              emptyDir: {}

它工作正常,但是如果pod被破坏,数据就会消失,因为jenkins用来存储数据的文件夹被挂载为emptyDir,这意味着只要pod存在,数据就会存在。

这显然不是最佳方案,因为即使在正常操作期间,pod也可能由于多种原因而被破坏。我知道我必须用其他东西替换emptyDir,但是,我不确定我应该使用什么。我可以配置GCE磁盘,但是,如果您配置的磁盘容量低于200GB,则会收到警告,说明您的磁盘将受到限制。由于GCE磁盘当时只能由一个写入者声明,这似乎有点过头了,如果我为每个需要保存持久数据的服务使用GCE磁盘,我们最终会得到一个昂贵的账单。

概括问题:

您在kubernetes上运行多个服务,需要保存少量持久的磁盘数据。您为他们提供了哪种存储空间?

1 个答案:

答案 0 :(得分:1)

您正在寻找的是Persistent Volumes,它基本上将基础持久性卷(,例如,AWS EBS或OpenStack Cinder卷)建模为资源。

这个名为PersistentVolume的资源定义了卷的规范,包括例如它的大小和名称。要实际使用它,您需要将PersistentVolumeClaim添加到您的部署yml中,该部署定义您想要附加到它的持久卷中期望的部署 - 可以有多个匹配的持久卷对于每一项索赔,正如有可能不会有任何剩余的索赔要求,这就是存在这种区别的原因。