我在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上运行多个服务,需要保存少量持久的磁盘数据。您为他们提供了哪种存储空间?
答案 0 :(得分:1)
您正在寻找的是Persistent Volumes,它基本上将基础持久性卷(,例如,AWS EBS或OpenStack Cinder卷)建模为资源。
这个名为PersistentVolume
的资源定义了卷的规范,包括例如它的大小和名称。要实际使用它,您需要将PersistentVolumeClaim
添加到您的部署yml中,该部署定义您想要附加到它的持久卷中期望的部署 - 可以有多个匹配的持久卷对于每一项索赔,正如有可能不会有任何剩余的索赔要求,这就是存在这种区别的原因。