【问题标题】:how to bound a Persistent volume claim with a gcePersistentDisk?如何将持久卷声明与 gcePersistentDisk 绑定?
【发布时间】:2018-05-02 21:07:07
【问题描述】:

我想将 PersistentVolumeClaim 与 gcePersistentDisk PersistentVolume 绑定。在我为得到它所做的步骤下面:

1。创建 gcePersistentDisk:

gcloud compute disks create --size=2GB --zone=us-east1-b gce-nfs-disk

2。定义 PersistentVolume 和 PersistentVolumeClaim

# pv-pvc.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: gce-nfs-disk
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
  labels:
    app: test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

运行kubectl apply -f pv-pvc.yml 后,nfs-pvc 未绑定nfs-pv。事实上,下面是我拥有的 PersistentVolume 和 PersistentVolumeClaim 的列表:

$ kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM             STORAGECLASS   REASON    AGE
nfs-pv                                     2Gi        RWO            Retain           Available                                              30s
pvc-16e4cdf2-cd3d-11e7-83ae-42010a8e0243   2Gi        RWO            Delete           Bound       default/nfs-pvc   standard                 26s
$ kubectl get pvc
NAME      STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs-pvc   Bound     pvc-16e4cdf2-cd3d-11e7-83ae-42010a8e0243   2Gi        RWO            standard       59s

得到的PersistentVolume是我在Google Container Engine上创建的节点磁盘上的一个volume。 那么,我错过了什么吗?

PS:kubernetes的版本

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-08T18:39:33Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"7+", GitVersion:"v1.7.8-gke.0", GitCommit:"a7061d4b09b53ab4099e3b5ca3e80fb172e1b018", GitTreeState:"clean", BuildDate:"2017-10-10T18:48:45Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

【问题讨论】:

  • 你的 PV 的名称是 my-pvc 以及 PVC 是 my-pvc。但是,在命令 'Kubectl get pv,pvc' 的结果中,名称不同,它们是 nfd-pv、nfs- PVC。为什么会出现这种行为?
  • 我明白你的意思。原名被放回。但是,无论如何,问题仍然在这里......

标签: kubernetes google-kubernetes-engine persistent-volumes persistent-volume-claims gce-persistent-disk


【解决方案1】:

我找到了解决办法。

PV和PVC的新定义如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
  labels:
    app: test  # the label has been added to make sure the bounding is working as expected
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: gce-nfs-disk
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
  labels:
    app: test
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: "" # the storageClassName has to be specified
  resources:
    requests:
      storage: 2Gi
  selector:
    matchLabels:
      app: test

在这些修改之后,这是工作的边界:

$ kubectl get pvc
NAME      STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
nfs-pvc   Bound     nfs-pv    2Gi        RWO                           8s
$ kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM             STORAGECLASS   REASON    AGE
nfs-pv    2Gi        RWO            Retain           Bound     default/nfs-pvc                            22m

我希望它会有所帮助。

【讨论】:

  • 在使用上述音量时出现此错误。获取 GCE GCECloudProvider 失败,错误
【解决方案2】:

使用 PersistentVolumeClaim,您无需创建 PersistentVolume 对象或 gcePersistentDisk。相反,只创建一个 PVC,Kubernetes 会自动创建一个引用后备存储的 PV 对象。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ssd-sc  # specify the storage class created below
  resources:
    requests:
      storage: 10Gi

创建一个StorageClass,以便它知道要使用哪个后备存储。如果删除 PVC 和存储类型(type: pd-ssd),您可以指定它保留存储(reclaimPolicy: Retain)。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ssd-sc 
provisioner: kubernetes.io/gce-pd
reclaimPolicy: Retain # Retain storage even if we delete PVC
parameters:
  type: pd-ssd # ssd

【讨论】:

    猜你喜欢
    • 2020-11-08
    • 1970-01-01
    • 2022-10-21
    • 2019-02-01
    • 1970-01-01
    • 2017-06-05
    • 2021-03-28
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多