首页 > 解决方案 > Kubernetes Google Cloud 中的 VolumeClaim

问题描述

我正在尝试在 Google Kubernetes Engine 上创建 PersistentVolume 和 PersistentVolumeClaim。

链接它们的方法是通过 labelSelector。我正在使用此定义创建对象:

卷.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 显然一直处于等待状态,等待符合其要求的 Volume。

请你帮助我好吗?

谢谢!

标签: kubernetesgoogle-cloud-platformgoogle-kubernetes-engine

解决方案


首先,PersistentVolume资源不属于任何命名空间。它们是集群级资源,如节点,但PersistentVolumeClaim对象只能在特定命名空间中创建。

似乎当您之前创建声明时,它立即绑定到PersistentVolume. 你能显示命令的输出吗:

$ kubectl get pv
$ kubectl get pvc

很可能您persistentVolumeReclaimPolicy已设置为Retain,因此您PersistentVolume现在处于Released状态。由于没有其他PersistenVolume资源符合您的索赔要求,因此您PersistentVolumeClaim处于Pending状态。


推荐阅读