我有一个使用PersistentVolumeClaim
配置的动态PersistentVolume
。
我想在pod完成后保留PV。所以我想拥有persistentVolumeReclaimPolicy: Retain
所做的。
但是,这适用于PersistentVolume
,而不是PersistentVolumeClaim
(AFAIK)。
如何更改动态配置PV的此行为?
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ .Release.Name }}-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: gp2
resources:
requests:
storage: 6Gi
---
kind: Pod
apiVersion: v1
metadata:
name: "{{ .Release.Name }}-gatling-test"
spec:
restartPolicy: Never
containers:
- name: {{ .Release.Name }}-gatling-test
image: ".../services-api-mvn-builder:latest"
command: ["sh", "-c", 'mvn -B gatling:test -pl csa-testing -DCSA_SERVER={{ template "project.fullname" . }} -DCSA_PORT={{ .Values.service.appPort }}']
volumeMounts:
- name: "{{ .Release.Name }}-test-res"
mountPath: "/tmp/testResults"
volumes:
- name: "{{ .Release.Name }}-test-res"
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-pvc"
#persistentVolumeReclaimPolicy: Retain ???
4条答案
按热度按时间bnlyeluc1#
解决方法是使用
reclaimPolicy: Retain
创建新的StorageClass,并在任何地方使用该StorageClass。PS:现有StorageClass的reclaimPolicy不可编辑,但可以删除StorageClass,使用
reclaimPolicy: Retain
重新创建x4shl7ld2#
这不是OP的答案,但对导致我在这里的个人渴望的答案是,我根本不需要
reclaimPolicy: Retain
。我需要一个StatefulSet
代替。如果这是给你的,请继续阅读:我的愿望是有一个
PersistentVolume
,它可以被容器以持久的方式反复重用;使用docker
和docker-compose
卷时的默认行为。所以一个新的PersistentVolume
只会被创建一次:我认为这样做的方法是用
reclaimPolicy: Retain
声明PersistentVolumeClaim
,然后在部署中引用它。但是即使我让reclaimPolicy: Retain
工作,仍然会在每个kubectl apply
上创建一个全新的PersistentVolume
。reclaimPolicy: Retain
只是确保旧的没有被删除。实现这个用例的方法是使用
StatefulSet
。它简单得多,然后它的行为就像我习惯的docker和docker-compose一样。vddsk6oq3#
您可以在pv.yaml或storageclass.yaml中配置它,或者使用补丁退出pv
pv.yaml
storageclass.yaml
打补丁
jjjwad0x4#
There是Kubernetes Github上关于动态配置卷的回收策略的问题。
简短的回答是“不”-您不能设置策略。
下面是从如何避免PV删除票中的对话的小报价:
快速通道:偶然发现了这个问题,我正在经历一个类似的问题。我想创建一个Elasticsearch集群,但要确保如果集群因为任何原因而关闭,存储在持久磁盘上的数据在重启时得到维护。我目前有一个PersistentVolumeClaim,用于每个携带数据的elasticsearch部署。
***********:@speedplane:只要你不删除PVC,它就会被保留。只有当kuberenetes看到一个绑定到PVC的PV并且PVC不存在时,才会执行回收策略。
@jsafrane好的,我知道了。因此,必须小心处理PVC,删除一个PVC就像删除磁盘上的所有数据。