PV、PVC介绍和使用

这篇具有很好参考价值的文章主要介绍了PV、PVC介绍和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

简介:

 PersistentVolume (PV):  PV是集群中配置好的一个网络存储,是集群的全局资源,不属于任何namespace;PV无法与pod直接关联,它的设计是用来和存储对接的,所以用于绑定后端存储,写入PV的数据最终都是存放在后端存储服务器上

 PersistentVolumeClaim (PVC):PVC可以直接被pod挂载,同时可以绑定PV,从而让pod使用PV; PVC与挂载它的pod隶属于同一个namespace

 官网资料: https://v1-22.docs.kubernetes.io/zh/docs/concepts/storage/persistent-volumes

 

 

PV、PVC介绍和使用

总结: PV是对底层网络存储的抽象,将网络存储定义为一种存储资源,将一个整体的存储资源拆分成多份后给不同的业务使用

        PVC是对PV资源的申请调用,pod是通过PVC将数据保存到PV,PV再把数据保存至真正的硬件存储

 

pod-pvc-pv关系图如下:

PV、PVC介绍和使用

可以看出层级关系最底层是存储,上层是PV,再上层是PVC,最上层是pod ;因此创建的话就得从底层往上层开始

PV参数

访问模式:

ReadWriteOnce : PV只能被单个节点以读写权限挂载,rwo

ReadOnlyMany: PV可以被多个节点挂载但是权限是只读的,rox

ReadWrieMany: PV可以被多个节点以读写方式挂载使用, rwx

删除机制:

Retain : 删除PV后保持原状,如果需要删除数据需要管理员到存储上手动删除(建议)

Recycle : 空间回收,直接删除存储卷上所有数据,目前仅支持NFS和hostPath (不建议)

Delete : 自动删除存储卷

卷类型:

定义存储卷使用的文件系统是块设备还是文件系统,默认是文件系统

PVC参数

访问模式:

ReadWriteOnce : PVC只能被单个节点以读写权限挂载,rwo

ReadOnlyMany: PVC可以被多个节点挂载但是权限是只读的,rox

ReadWrieMany: PVC可以被多个节点以读写方式挂载使用, rwx

resources  : 定义PVC创建存储卷的大小

PVC如何绑定PV:(两种方式)

1、seletcot : 标签选择器,用来选择需要绑定的PV

         # matchLabels : 匹配标签名称

         # matchExpressions : 基于正则表达式匹配

2、volumeName : 直接点名要绑定的PV名称(相较于上面的标签选择器更精准)

volumeMode : 卷类型

                    定义PVC使用的文件系统是块设备还是文件系统,默认是文件系统

注:PVC空间要小于PV的空间

 

  主机用途    IP 主机名
K8S集群node 172.31.7.111 node1
nfs网络存储服务器 172.31.7.109 haproxy02
K8S集群管理节点 172.31.7.110 k8s-deploy

 

一、部署存储卷

 

1、把172.31.7.109主机设置为nfs共享存储服务器

1.1、安装nfs服务端
root@haproxy02:~# apt install nfs-server
 
1.2、创建共享目录
root@haproxy02:~# mkdir /data/k8sdata/myappdata  -p

root@haproxy02:/data/k8sdata# echo pv >> /data/k8sdata/myappdata/index.html
 
1.3、设置共享,把目录进行共享,赋予读写权限,不做权限映射,是哪个用户写的就是哪个用户的uid和gid权限
root@haproxy02:~# echo -e "/data/k8sdata *(rw,no_root_squash)" >> /etc/exports
 
1.4、重启服务并设置开机自启
root@haproxy02:~# systemctl restart nfs-server && systemctl enable nfs-server

 在nfs服务端创建共享目录文件 /data/k8sdata/myappdata/index.html

PV、PVC介绍和使用

2、客户端检查nfs共享目录

1、安装showmount命令客户端
root@k8s-deploy:~/yaml/yl# apt install nfs-common
 
2、检查能否识别到nfs服务器,和权限
root@k8s-deploy:~/yaml/yl# showmount -e 172.31.7.109
Export list for 172.31.7.109:
/data/k8sdata *

3、在K8S集群创建PV

root@k8s-deploy:~/yaml/yl# vim pv.yaml
kind: PersistentVolume    #资源类型是PV
apiVersion: v1
metadata:                #因为是全局资源不需要指定namespace
  name: myserver-myapp-static-pv    #PV名称
spec:
  capacity:
    storage: 2Gi
  accessModes:           #访问模式
    - ReadWriteOnce      #被单个节点以读写权限挂载
  nfs:
    path: /data/k8sdata/myappdata    #nfs共享目录
    server: 172.31.7.109            #nfs server端地址


root@k8s-deploy:~/yaml/yl# kubectl apply -f pv.yaml

root@k8s-deploy:~/yaml/yl# kubectl get pv
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
myserver-myapp-static-pv   2Gi        RWO            Retain           Available                                   4s

 PV的状态必须要是Available 可用的

PV、PVC介绍和使用

 

4、在K8S集群创建PVC

root@k8s-deploy:~/yaml/yl# vim pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myserver-myapp-static-pvc
  namespace: myserver
spec:
  volumeName: myserver-myapp-static-pv #指定要绑定的PV名称
  accessModes:          #访问模式
    - ReadWriteOnce     #访问模式是只能被单个节点以读写权限挂载
  resources:            #定义PVC创建存储卷的大小
    requests:           #大小请求
      storage: 2Gi      #PVC 2G大小

创建namespace
root@k8s-deploy:~/yaml/yl# kubectl create ns myserver

启动pvc
root@k8s-deploy:~/yaml/yl# kubectl apply -f pvc.yaml

可以看见PVC已经绑定到PV上了

PV、PVC介绍和使用

 

5、在K8S集群创建pod资源

root@k8s-deploy:~/yaml/yl# cat nginx-pvc-pod.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: myserver-myapp-deployment
  namespace: myserver
  labels:
    app: myserver-myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myserver-app
  template:
    metadata:
      labels:
        app: myserver-app
    spec:
      containers:
      - name: myapp-container
        image: nginx:1.20.0
        volumeMounts:
        - mountPath: "/usr/share/nginx/html/statics"   #容器的挂载点
          name: statics-datadir                        #被挂载卷的名称
      volumes:
      - name: statics-datadir  #共享存储卷名称,把下面的PVC声明一个卷叫做statics-datadir,再把这个卷挂载到上面的容器目录
        persistentVolumeClaim:   #类型是PVC
          claimName: myserver-myapp-static-pvc  #指定要绑定的PVC,前面已经创建好了

---
kind: Service
apiVersion: v1
metadata:
  name: myserver-myapp-service
  namespace: myserver
  labels:
    app: service-nginx
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    targetPort: 80
    nodePort: 30080
  selector:
    app: myserver-app   #这里调用这个标签的pod,跟上面容器中定义的标签一致

root@k8s-deploy:~/yaml/yl# kubectl apply -f nginx-pvc-pod.yaml

root@k8s-deploy:~/yaml/yl# kubectl get pod -n myserver
NAME                                        READY   STATUS    RESTARTS   AGE
myserver-myapp-deployment-6bdbb5c6b-jqclx   1/1     Running   0          16m

        进入nginx容器看下存储卷挂载,可以看见之前写入的文件index.html内容

PV、PVC介绍和使用

  

        访问node节点30080端口的static目录, 能看见之前写入存储卷里的文件内容PV

PV、PVC介绍和使用

 6、 删除资源:

可以看见之前创建了三个yaml资源文件,之前创建需要从底层往上层建,删除的话需要从上层往下层删除
root@k8s-deploy:~/yaml/yl# ls
nginx-pvc-pod.yaml  pvc.yaml  pv.yaml

删除pod,删除pvc,删除pv
root@k8s-deploy:~/yaml/yl# kubectl delete -f nginx-pvc-pod.yaml

root@k8s-deploy:~/yaml/yl# kubectl delete -f pvc.yaml

root@k8s-deploy:~/yaml/yl# kubectl delete -f pv.yaml

 

总结:以上就是PV和PVC最简单的使用方式了,是静态存储卷,需要在使用前手动创建PV,然后创建PVC并绑定到PV上,挂载到pod上使用,适用于PV和PVC比较固定的业务场景文章来源地址https://www.toymoban.com/news/detail-424425.html

到了这里,关于PV、PVC介绍和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S临时存储-本地存储-PV和PVC的使用-动态存储(StorageClass)

    容器中的文件在磁盘上是临时存放的,当容器崩溃或停止时容器上面的数据未保存, 因此在容器生命周期内创建或修改的所有文件都将丢失。 在崩溃期间,kubelet 会以干净的状态重新启动容器。 当多个容器在一个 Pod 中运行并且需要共享文件时,会出现另一个问题,跨所有容

    2024年04月16日
    浏览(36)
  • 使用k8s部署Mysql实例~hostpath,nfs服务器,PV和PVC持久化

    1.基础存储的分类: 分类 说明 EmptyDir EmptyDir是在Pod 被分配到Node时 创建的, 无须手动指定 ,当 Pod销毁时 , EmptyDir中的数据也会被 永久删除 HostPath HostPath就是将Node主机中一个实际目录挂载到Pod中,保证 Pod销毁 了,但是 数据依旧可以存在 于Node主机上 NFS NFS是一个网络文件

    2024年02月20日
    浏览(35)
  • Kubernetes Volume及其类型(NFS、SAN) - PV - PVC - PV与PVC与Pod的关系

    目录 volume 卷 官方文档:卷 | Kubernetes 一、emptyDir(临时卷) 二、hostPath卷 type字段参数  hostPath 实验: 三、第3方提供的存储卷(百度云、阿里云、亚马逊云、谷歌云等) 四、local卷 五、NFS卷 参考文档:https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs 六、SAN卷 七、NA

    2024年02月16日
    浏览(32)
  • PV、PVC的知识

    PV : 持久化卷的意思,是对底层的共享存储的一种抽象 PVC(Persistent Volume Claim)是持久卷请求于存储需求的一种声明(PVC其实就是用户向kubernetes系统发出的一种资源需求申请。) 使用了PV和PVC之后,工作可以得到进一步的细分: 存储:存储工程师维护 PV: kubernetes管理员维护

    2024年02月06日
    浏览(22)
  • 【kubernetes】持久卷PV、PVC

    目录 PV和PVC之间的相互作用遵循这个生命周期 根据这 5 个阶段,PV 的状态有以下 4 种 一个PV从创建到销毁的具体流程如下 静态PV创建 1、配置nfs存储 2、定义PV 3、定义PVC 4、测试访问 动态PV创建 1、在stor01节点上安装nfs,并配置nfs服务 2、创建 Service Account,用来管理 NFS Provis

    2024年02月13日
    浏览(32)
  • 浅析kubernates的pv和pvc

    最近,在看许多Kubenates的相关文章的时候,了解到了一个概念,是我之前不清楚的。 – PVPVC 。那么今天就总结下这几天的收获。 在总结之前我先解释下PV和PVC是什么意思。 PV:Persistent Volume PVC:Persistent Volume Claim 【通俗字面理解】 从英文的解释上看,大致可以理解为PV就是

    2024年02月08日
    浏览(20)
  • k8s pv与pvc

    1.前言 PV 是 Kubernetes 集群中的一种资源对象,它代表着一块物理存储设备,例如磁盘、网络存储或云存储等。PV 可以被多个 Pod 共享,并且可以独立于 Pod 存在。PV 可以配置不同的访问模式 (Access Modes),例如 ReadWriteOnce 、 ReadOnlyMany 或 ReadWriteMany ,以确定 PV 可以被多少个 Pod 同

    2024年01月21日
    浏览(39)
  • k8s ------存储卷(PV、PVC)

    目录 一:为什么需要存储卷? 二:emptyDir存储卷  ​三:hostPath存储卷  四:nfs共享存储卷   五:PVC 和 PV 1、PVC 和 PV介绍 2、PV和PVC之间的相互作用遵循的生命周期 3、PV 的4 种状态 4、一个PV从创建到销毁的具体流程 六:静态创建pv和pvc资源由pod运用过程 ​1、配置nfs存储 ​

    2024年02月13日
    浏览(36)
  • k8s--动态pvc和pv

    目录 前情回顾 动态pv 实验模拟 步骤一:在stor01节点上安装nfs,并配置nfs服务 接下来在matser01上配置 步骤二:创建 Service Account,用来管理 NFS Provisioner 在 k8s 集群中运行的权限和动态规则 步骤三:使用 Deployment 来创建 NFS Provisioner  部署nfs-provisioners插件: 步骤四:创建 St

    2024年01月24日
    浏览(38)
  • PV & PVC in K8s

    在Kubernetes中,PV(Persistent Volume)和PVC(Persistent Volume Claim)是用于管理持久化存储的重要资源对象。PV表示存储的实际资源,而PVC表示对PV的声明性要求。当应用程序需要使用持久化存储时,它可以通过创建PVC来请求和使用PV。以下是使用PV和PVC时的一些注意事项: 定义存储类

    2024年02月09日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包