Kubernetes PersistentVolume & PersistentVolumeClaim

举报
叶康铭 发表于 2021/03/26 00:03:30 2021/03/26
【摘要】 什么是数据卷 (Volumns) 在Kubernetes Pod中的容器系统存储文件是临时的,Pod如果异常重启将会恢复到镜像的原始状态从而会丢失所有的状态包括系统存储文件,或者同一个Pod中多个容器需要共享数据。数据卷诞生就是为了解决这一类数据持久化及数据共享的场景,并与容器的生命周期分离开。 什么是PV (PersistentVolume) PV是定义存储数据...

什么是数据卷 (Volumns)

在Kubernetes Pod中的容器系统存储文件是临时的,Pod如果异常重启将会恢复到镜像的原始状态从而会丢失所有的状态包括系统存储文件,或者同一个Pod中多个容器需要共享数据。数据卷诞生就是为了解决这一类数据持久化及数据共享的场景,并与容器的生命周期分离开。

什么是PV (PersistentVolume)

PV是定义存储数据的方式,例如存储类、存储实现等,是由集群管理员定义的集群资源中的对象。

PV AccessModes 访问模式

ReadOnlyMany(ROX) 允许被多个节点以只读的模式进行挂载。
ReadWriteOnce(RWO)允许被单个节点以读写的模式进行挂载。
ReadWriteMany(RWX)允许被多个节点以读写的模式进行挂载。

PV Reclaim Policy 回收机制

Retain(保留) 当PVC与PV解除绑定关系后PV处于保留状态,如果有同样声明的PVC时PV将继续可以被绑定使用,期间数据不会被删除。
Recycle(回收) 当PVC与PV解除绑定关系后PV将会被回收,如果有新的声明的PVC时PV将继续可以被绑定使用,但在解除关系时会被删除数据。
Delete(删除) 当PVC与PV解除绑定关系后PV将会被删除,同时PVC数据也不会保留。

PV Phase 运行状态

Available PV处于可用状态,可以被PVC绑定。
Bound PV已被PVC所绑定。
Released PVC已删除,但PV还未被集群回收。
Failed PV自动回收失败。

PV 基本操作

通过YAML资源定义清单创建PV
kubectl apply -f nginx-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nginx-pv
spec:
  capacity: storage: 1Gi
  persistentVolumeReclaimPolicy: Delete
  accessModes:
  - ReadWriteMany
  hostPath: path: /data/volume/nginx-pv

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
查看PV详细信息
kubectl describe pv
在这里插入图片描述

什么是PVC (PersistentVolumeClaim)

PVC是声明定义存储数据使用的请求,被挂载到Pod中进行使用。通常由开发人员进行配置使用,不用关心数据存储底层具体的实现方式,只关心与业务相关的数据存储大小,访问方式等。

PV和PVC的绑定规则
  1. 按照访问模式来匹配
  2. 按照按照容量大小来选择最合适的匹配,尽量的节省资源
  3. 如访问模式和容量大小都一样,按照标签来匹配,如果以上条件都不满足,则随机匹配

PV与PVC是一对一关系,一个PVC只能绑定到一个PV,如果PV被绑定后,其他PVC则无法在使用此PV。

PVC 基本操作

通过kubectl创建PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nginx-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources: requests: storage: 500M

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

查看PV详细信息
kubectl describe pvc
在这里插入图片描述

将PVC挂载在Pod上当成数据卷使用
kubectl apply -f nginx-pod-pvc.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers: - name: nginx image: nginx:1.16 volumeMounts: - name: nginx-volume mountPath: /data
  volumes: - name: nginx-volume persistentVolumeClaim: claimName: nginx-pvc

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

查看Pod挂载的持久卷信息
kubectl describe pod
在这里插入图片描述

文章来源: blog.csdn.net,作者:叶康铭,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_38030719/article/details/104495969

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。