我的PersistentVolumeClaim不会使用我为此准备的PersistentVolume。
我在PersistentVolume
中有这个monitoring-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-volume
labels:
usage: monitoring
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/k8data/monitoring
完成后
kubectl apply -f monitoring-pv.yaml
我可以用kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
monitoring-volume 50Gi RWO Retain Available 5m
我在PersistentVolumeClaim
中的monitoring-pvc.yaml
看起来像这样:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monitoring-claim
namespace: monitoring
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
selector:
matchLabels:
usage: monitoring
我kubectl apply -f monitoring-pvc.yaml
做完了。
我可以用PersistentVolumeClaim
查看我的新get pvc -n monitoring
,然后看到
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
monitoring-claim Pending manual 31s
当我用PersistentVolume
查看kubectl get pv
时,我仍然可以看到它:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
monitoring-volume 50Gi RWO Retain Available 16m
我曾期望PersistentVolume
是Bound
,但事实并非如此。当我使用一个与此名称相同的“ PersistentVolumeClaim”时,会创建一个新的PersistentVolumeClaim
,它是用/tmp
编写的,因此不是很持久。
当我为PersistentVolumeClaim
进行没有命名空间的相同操作时,一切似乎都正常工作。
我在Ubuntu 18.04上使用minikube。
我需要更改什么才能将音量与声明联系起来?
答案 0 :(得分:1)
当我查看问题并将其与可行的解决方案进行比较时,我注意到在一个示例中,我没有使用设置为storageClassName
的{{1}},而我无法使用该命名空间。 / p>
我更新的manual
现在看起来像这样:
PersistentVolume
唯一的区别是
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-volume
labels:
usage: monitoring
spec:
storageClassName: manual
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/k8data/monitoring
我的初步发现是,这是我犯的愚蠢错误。
答案 1 :(得分:1)
永久卷和卷声明应位于同一名称空间中。您需要添加名称空间:监视。现在您可以在下面的代码中尝试
持续量
monitoring-pv.yml
example_list = [[['aaaa'],['bbbb'],['cccc']], [['aabsd'],['fdwewd'],['dsfss']], [['sssss'],['ddddd'],['fffff']]]
def flatten(container):
for i in container:
if isinstance(i, (list,tuple)):
for j in flatten(i):
yield j
else:
yield i
new_list = list(flatten(example_list))
for elem in new_list:
if ('aaa' in elem):
print(elem)
用于永久性批量索赔
monitoring-pvc.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: monitoring-volume
labels:
usage: monitoring
namespace: monitoring
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/k8data/monitoring