k8s pv详解

一、概述

在Kubernetes 中为了让用户更加方便的使用存储,便引入了 PV 和 PVC这两个资源对象来实现对存储的管理。本章节主要介绍PV

PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。

PV作为对存储资源的定义,主要涉及存储能力、访问模式、存储类型、回收策略、后端存储类型等关键信息的设置。
Kubernetes支持的PV类型如下:

类型描述
AWSElasticBlockStoreAWS公有云提供的Elastic Block Store
AzureFileAzure公有云提供的File
AzureDiskAzure公有云提供的Disk
CephFS一种开源共享存储系统
CinderOpenStack块存储系统
FC (Fibre Channel)光纤存储设备
FlexVolume一种插件式的存储机制
Flocker一种开源共享存储系统
GCEPersistentDiskGCE公有云提供的Persistent Disk
Glusterfs一种开源共享存储系统
HostPath宿主机目录,仅用于单机测试
iSCSIiSCSI存储设备
Local本地存储设备,从Kubernetes 1.7版本开始引入,到1.14版本时达到稳定版本,目前可以通过指定块设备(Block Device) 提供Local PV,或通过社区开发的sig-storage-local-static-provisioner插件管理Local PV的生命周期
NFS网络文件系统
Portworx VolumesPortworx提供的存储服务
Quobyte VolumesQuobyte提供的存储服务
RBD (Ceph Block Device)Ceph块存储
ScaleIO VolumesDellEMC的存储设备
StorageOSStorageOS提供的存储服务
VsphereVolumeVMWare提供的存储系统

二、pv配置参数解释

创建pv,如下:

[root@k8s-master pv]# cat pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs
spec:
  storageClassName: nfs    ###使用的sc name
  capacity:
    storage: 5Gi   ###请求的大小
  accessModes:
  - ReadWriteOnce    ####访问模式
  persistentVolumeReclaimPolicy: Retain
  volumeMode: Filesystem 
#nfs:      ####我本地环境设置了nfs-provsioner,所有不需要的单独在配置nfs
  #  path: /data/nfs
  #  server: 192.168.41.210

参数解释

  • storageClassName: 用于创建pv的sc name
  • capacity:创建pv指定的大小
  • accessModes:访问模式
ReadWriteOnce (RWO):读写权限,并且只能被单个pod挂载;
ReadOnlyMany (ROX):只读权限,允许被多个pod挂载;
ReadWriteMany(RWX):读写权限,允许被多个pod挂载;(ceph rbd 在volume mode 作为block方式的时候可以rwx,使用Filesystem时不支持RWX)
  • persistentVolumeReclaimPolicy:设置资源回收类型
Retain: 保留数据,需要手工处理;
Recycle: 简单清除文件的操作(例如运行rm -rf /thevolume/*命令),只有 NFS 和 HostPath 两种类型的 PV支持 Recycle 策略。
Delete: 与PV相连的后端存储完成Volume的删除操作,AWSElasticBlockStore、 GCEPersistentDis、 AzureDisk和Cinder类型的PV支持 Delete策略。
  • volumeMode:
1:文件系统模式的PV将以目录(Directory)形式挂载到Pod内,文件系统类型在sc中定义,默认情况下容器使用  Filesystem类型

2:块设备,如果设备是空的,Kubernetes则会自动在块设备上创建一个文件系统。支持块设备的存储类型会以裸设备 (Raw Block Device) 的形式挂载到容器内,并且不会创建任何文件系统,适用于需要直接操作裸设备(速度最快)的应用程序。
  • 亲和性nodeAffinity
PV可以设置节点亲和性来限制只能通过某些Node访问Volume,可以在PV定义的nodeAffinity字段中进行设置。使用这些Volume的Pod将被调度到满足条件的 Node上。这种情况多用于local-path的环境中
nodeAffinity:
        required:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname 
            operator: In 
            values:
            - local-node      ###当label的key和values都匹配时才会在对应的节点创建pv
  • 总结
在使用pv的过程中,会出现以下几种状态
   Available:可用状态,还未与某个PVC绑定;
   Bound:已与某个PVC绑定;
   Released:与之绑定的PVC已被删除,但未完成资源回收,不能被其他 PVC使用;
   Failed:自动资源回收失败。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Kubernetes中,PV(PersistentVolume)是一种持久卷,可以通过不同的资源提供者以各种方式挂载到宿主系统上。其中,NFS是一种常用的资源提供者,可以支持多个读写客户端。每个PV卷都有自己的访问模式,描述了特定PV卷的能力,在PV卷的访问模式中,ReadWriteOnce表示卷可以被一个节点以读写方式挂载,ReadOnlyMany表示卷可以被多个节点以只读方式挂载,ReadWriteMany表示卷可以被多个节点以读写方式挂载。如果你想确保整个集群中只有一个Pod可以读取或写入该PVC,可以使用ReadWriteOncePod访问模式,这仅支持CSI卷并需要Kubernetes 1.22以上版本。 在创建PVC时,我们可以动态创建一个PV来方便使用,此时PV事先是不存在的。当使用默认的回收策略retain时,删除PVC后,PV会处于released状态。如果想要继续使用这个PV,需要手动删除PV,但是删除PV不会删除PV中的数据。当我们重新创建PVC时,会再次与最匹配的PV进行绑定,数据不会丢失。删除流程为POD->PVC->PV。 综上所述,k8s PV NFS是指在Kubernetes中使用NFS作为资源提供者的持久卷。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL的持久化部署(k8s与NFS)](https://download.csdn.net/download/weixin_38705252/14038256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [k8sPV&PVC(NFS)](https://blog.csdn.net/qq_41586875/article/details/120814385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值