kubernetes数据持久化PV(静态)

PV:

  由管理员在集群中提供的存储

PVC:

  用户对存储的请求

PV 和 PVC 的交换过程

  供应(Provisioning):创建PV

  绑定(Binding):将PV分配给PVC

  使用(Using):Pod通过PVC使用该PV

  释放(Releasing):Pod释放Volume并删除PVC,删除后根据策略进行PVC的数据处理

  回收(Reclaiming):回收PV,可以保留PV以便下次使用,也可以直接从云存储中删除,策略包括保留、回收、删除

    保留(Retained):此策略允许手工回收,PVC删除,PV将仍然存储,存储卷被认为处于已释放状态,但对于其他PVC是不可用的,因为之前数据     仍然保留在数据卷中,可通过以下步骤手工回收存储卷

    1)删除PV:在PV被删除后,在外部设施中相关的存储资产仍然存在;

    2)手工删除遗留在外部存储中的数据;

    循环(Recycled):此策略未来会被遗弃,建议后续使用动态供应的模式

               循环回收会在存储卷上执行基本擦除命令:rm -rf /thevolume/*, 使数据对于新的PVC可用

    删除(Deleted):即从kubernetes中移除PV,也会从相关外部设施中删除存储资产.


存储卷状态

  Available:可用状态,表示PV已经准备就绪,可以被PVC使用

  Bound:绑定状态,表明PV已被分配给了PVC

  Released:释放状态,表明PVC解绑PV,但还未执行回收策略

  Failed:错误状态,表明PV发生错误

工作流程


示例:

NFS服务器

  IP :172.17.66.208

  目录: /data/mysql_slave_pv

NFS服务器配置完成后检查没有问题进行PV、PVC和pod使用PVC操作

创建PV

# cat mysql-slave-pv.yaml

apiVersion: v1

kind: PersistentVolume

metadata:

  name: mysql-slave-pv

  namespace: codeus               #PV和PVC的命名空间不同可能无法绑定

  labels:

    release: stable                       ###标签,下面的pvc也需要指定此标签

spec:

  capacity:

    storage: 5Gi                         ###空间5个G

  accessModes:

  - ReadWriteOnce                  ###权限,可读可写

  persistentVolumeReclaimPolicy: Recycle           ###持久卷回收策略

  nfs:               ###nfs信息

    path: /data/mysql_slave_pv

    server: 172.17.66.208

创建PVC

# cat mysql-slave-pvc.yaml

kind: PersistentVolumeClaim

apiVersion: v1

metadata:

  name: mysql-slave-pvc

  namespace: codeus

spec:

  accessModes:

  - ReadWriteOnce

  resources:

    requests:

      storage: 5Gi

  selector:

    matchLabels:

      release: stable    ###指定PV标签

Pod使用PVC

# cat mysql-slave-rc.yaml

............中间省略

volumeMounts:

        - mountPath: "/var/lib/mysql/"

          name: data

      volumes:

      - name: data

        persistentVolumeClaim:

          claimName: myclaim-1

查看PV、PVC状态

# kubectl -n codeus get pv,pvc      ##可以看到状态都是Bound绑定状态

你可能感兴趣的:(kubernetes数据持久化PV(静态))