zoukankan      html  css  js  c++  java
  • 静态PV PVC

    认识PV/PVC/StorageClass

          管理存储是管理计算的一个明显问题。该PersistentVolume子系统为用户和管理员提供了一个API,用于抽象如何根据消费方式提供存储的详细信息。为此,我们引入了两个新的API资源:PersistentVolume和PersistentVolumeClaim
          PersistentVolume(PV)是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像节点是集群资源一样。 PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。 此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。
          PersistentVolumeClaim(PVC)是由用户进行存储的请求。 它类似于pod。 Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)。
          虽然PersistentVolumeClaims允许用户使用抽象存储资源,但是PersistentVolumes对于不同的问题,用户通常需要具有不同属性(例如性能)。群集管理员需要能够提供各种PersistentVolumes不同的方式,而不仅仅是大小和访问模式,而不会让用户了解这些卷的实现方式。对于这些需求,有StorageClass 资源。
          StorageClass为管理员提供了一种描述他们提供的存储的“类”的方法。 不同的类可能映射到服务质量级别,或备份策略,或者由群集管理员确定的任意策略。 Kubernetes本身对于什么类别代表是不言而喻的。 这个概念有时在其他存储系统中称为“配置文件”。

    创建PV

    通过NFS创建两个存储,1个2G,1个20G,通过NFS共享出去

     

    创建pv

    pv-damo.yml文件如下:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv001
      labels:
        name: pv001
    spec:
      capacity:
        storage: 2Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      nfs:
        server: 192.168.8.128
        path: "/mnt/doufy/pod1nfs"
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv002
      labels:
        name: pv002
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      nfs:
        server: 192.168.8.128
        path: "/mnt/doufy/pod2nfs"

    pvc-damo.yml如下:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mypvc
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Gi

    创建pv

    采用的Retain 回收模式(下表解释), 第一次创建状态处于Available 可用状态

    1,pv独立于pod存在
    2,pv可以创建动态pv或者静态pv。动态pv不需要手动去创建。静态pv需要手动创建
    3,访问模式:ReadWriteOnce:可读可写只能mount到一个节点. ReadOnlyMany:PV能模式挂载到多个节点
    4,回收规则:PV 支持的回收策略有: Retain. Recycle.delete
        Retain 管理员回收:kubectl delete pv pv-damo.yaml 创建:kubectl apply -f pv-damo.yaml 在删除pvc后PV变为Released不可用状态,重新使用需要删除重建pv(数据不会丢失)
        Recycle策略 – 删除pvc自动清除PV中的数据,效果相当于执行 rm -rf * 删除pvc时pv的状态由Bound变为Available.此时可重新被pvc申请绑定
        Delete – 删除存储上的对应存储资源,NFS不支持delete策略
    1 [root@master1 pv-static]# kubectl create -f pv-damo.yml
    2 persistentvolume/pv001 created
    3 persistentvolume/pv002 created
    4 [root@master1 pv-static]# kubectl get pv -o wide
    5 NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE   VOLUMEMODE
    6 pv001   2Gi        RWX            Retain           Available                                   3s    Filesystem
    7 pv002   20Gi       RWX            Retain           Available                                   3s    Filesystem
    8 [root@master1 pv-static]#

    创建pvc

    创建pvc会自动绑定到合适的磁盘。此时pvc状态为bound

    1 [root@master1 pv-static]# kubectl create -f pvc-damo.yml
    2 persistentvolumeclaim/mypvc created
    3 [root@master1 pv-static]# kubectl get pvc -o wide
    4 NAME    STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
    5 mypvc   Bound    pv002    20Gi       RWX                           9s    Filesystem
    6 [root@master1 pv-static]#

    绑定pvc之后查看pv状态,pv002变为Bound

    1 [root@master1 pv-static]# kubectl get pv -o wide
    2 NAME    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM           STORAGECLASS   REASON   AGE     VOLUMEMODE
    3 pv001   2Gi        RWX            Retain           Available                                           3m17s   Filesystem
    4 pv002   20Gi       RWX            Retain           Bound       default/mypvc                           3m17s   Filesystem
    5 [root@master1 pv-static]#

    后续创建pod就可以使用了

       

  • 相关阅读:
    集合
    3/11
    字典
    3/10
    字符串之不常用方法
    字符串的索引和切片
    数据类型的转化
    Markdown在线编辑器
    3/9
    Django:RestFramework之-------渲染器
  • 原文地址:https://www.cnblogs.com/doufy/p/12752056.html
Copyright © 2011-2022 走看看