我正在尝试在Google Kubernetes Engine上创建PersistentVolume和PersistentVolumeClaim .
链接它们的方法是通过labelSelector . 我正在使用此定义创建对象:
volume.yml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test
namespace: mynamespace
labels:
pv-owner: owner
pv-usage: pv-test
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /data/test/
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-test
namespace: mynamespace
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
selector:
matchLabels:
pv-usage: pv-test
和运行:
kubectl apply -f volume.yml
这两个对象都已成功创建,但是,VolumeClaim显然正在等待永远等待符合其要求的卷 .
请你帮助我好吗?
谢谢!
2 回答
首先,
PersistentVolume
资源不属于任何名称空间 . 它们是节点等集群级资源,但PersistentVolumeClaim
对象只能在特定名称空间中创建 .似乎在您之前创建声明时,它立即绑定到
PersistentVolume
. 你能显示命令的输出:您的
persistentVolumeReclaimPolicy
很可能被设置为Retain
,因此您的PersistentVolume
现在处于Released
状态 . 由于没有其他PersistenVolume
资源符合您的索赔要求,因此PersistentVolumeClaim
处于Pending
状态 .谢谢你的帮助@ konstantin-vustin
我找到了解决方案 . 我必须在两个对象的规范中指定 storageClassName: manual 属性 .
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class
根据文件
所以IMO之前应该有用,所以我不确定我是否清楚地理解它 .
这是以前的状态
更新的定义
这是之后的状态