我正在GCP的Kubernetes中工作,但在卷和永久磁盘方面遇到了问题。
我正在使用Directus 7(CMS Headless),它将大部分信息保存在数据库中,但上传的文件除外,这些文件位于 / var / www / html / public / uploads strong>文件夹(已在docker-compose上进行了本地测试,可以正常工作),并且该文件夹是我要保存在永久性磁盘上的那个文件夹。
没有错误发生,但是当重启Kubernetes Pod时,我丢失了上传的图像(它们没有保存在磁盘上)。
这是我的配置:
apiVersion: v1
kind: PersistentVolume
metadata:
name: directus-pv
namespace: default
spec:
storageClassName: ""
capacity:
storage: 100G
accessModes:
- ReadWriteOnce
gcePersistentDisk:
pdName: directus-disk
fsType: ext4
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: directus-pvc
namespace: default
labels:
app: .....
spec:
storageClassName: ""
volumeName: directus-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100G
在deploy.yaml中:
volumeMounts:
- name: api-disk
mountPath: /var/www/html/public/uploads
readOnly: false
volumes:
- name: api-disk
persistentVolumeClaim:
claimName: directus-pvc
感谢您的帮助
答案 0 :(得分:0)
从pv和pvc清单中删除名称空间属性。它们是群集中的共享资源。 还要删除存储类属性。
答案 1 :(得分:0)
我认为您正在使用PersistentVolumeReclaimPolicy = * Recycle以某种方式创建您手动设置的持久性卷 directus-pv 。这是可能导致每次POD重新启动时擦除数据的唯一可能原因。
我无法使用提供的清单文件来复制您的案子, 但我尝试了以下测试:
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: busybox-list-uploads
spec:
replicas: 1
template:
metadata:
labels:
app: busybox-list-uploads
version: "2"
spec:
containers:
- image: busybox
args: [/bin/sh, -c, 'sleep 9999' ]
volumeMounts:
- mountPath: /var/www/html/public/uploads
name: api-disk
name: busybox
volumes:
- name: api-disk
persistentVolumeClaim:
claimName: directus-pvc
对于我在busybox-list-uploads-dgfbc中;做kubectl exec -it $ i-ls / var / www / html / public / uploads;完成 丢失+找到picture_from_busybox-list-uploads-ng4t6.png
如您所见,输出清晰可见,数据在POD重新启动后仍然存在
*您可以使用cmd进行验证:kubectl get pv/directus-pv -o yaml