PV-PVC

news/2024/10/1 3:21:39

PV & PVC

https://blog.csdn.net/bdkl9998/article/details/106304255

4db2fd7fa9e3cc12009ddd1ffcc54966.png

891e09a45fdde5d8f5359182f21d1cc7.png

a508fffbf241213b45a78dd7d55eaadb.png

PersistentVolume(PV)

是由管理员设置的存储,是集群的一部分,它不属于任何命名空间
PV的生命周期独立于使用它的pod的生命周期
PV更像是一种储备资源,先创建,有PVC需要它时才会被使用
PV可以是多种类型的(GCE,NFS等)
分为静态和动态

PersistentVolumeClaim(PVC)

用户创建pvc以使用pv
PVC与PV的绑定是一对一的映射,小的pvc可能会使用大的pv,没有其他pvc可以利用剩余空间
如果没有可用的PV,那么PVC会一直处于unbound未绑定状态,直到有新的pv产生,如果pvc与pv匹配,会自动绑定

创建持久卷

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongodb-pv
spec:
  accessModes:
    - ReadWriteOnce
    - ReadOnlyMany
  capacity:
    storage: 1Gi
  hostPath:            # 使用节点本地目录存储(生产环境不会这样配置,仅演示)
    path: /tmp/data
  persistentVolumeReclaimPolicy: Recycle  awsElasticBlockStore: # 亚马逊弹性存储
    volumeID: <volume-id>
    fsType: ext4    PV访问模式(只能同时指定一个)
ReadWriteOnce   (RWO)  该卷只能被单个节点以读/写模式挂载
ReadOnlyMany    (ROX)  该卷可以被多个节点以只读模式挂载
ReadWriteMany   (RWX)  该卷可以被多个节点以读/写模式挂载回收策略(不同的卷可能不持支所有策略)
Retain  (保留)    删除绑定的PVC后,PV不会被删除,需要手动删除
Recycle (回收)    删除绑定的PVC后,PV不会被删除,其中的数据会被删除
Delete  (删除)    删除绑定的PVC后,PV会被自动删除

创建持久卷声名

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongodb-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi  stotageClassName: ""

在Pod中使用PVC

...
volumes:
- name: mongodb-data
  persistentVolumeClaim:
    claimName: mongodb-pvc

持久卷回收

当不再需要PV时,可以删除PVC来回收PV。PV的常有状态Released(不可用,需要根据回收策略来判断) Available(可以被PVC使用)

当启用PVC的保护功能时,如果删除正在使用的pvc,pvc的删除将会被推迟,直到pvc不再被任何pod使用

手动回收  
Retain
PV的默认回收策略,PVC释放PV后,该PV和其中数据依然保留,需要手动删除PV后再创建才能使用
使用kubectl delete pv my_pv命令删除PV,不会删除其存储空间中的数据自动回收 
Recycle 
PVC释放PV后,PV中数据会被清除,重新变为Available状态,此时PVC可以使用PVDelete
会将PV的存储空间删除

PV的状态

Available:   可用状态,目前还没有绑定给PVC
Bound:       绑定给了某个PVC
Released:   PVC已经解除与PV的绑定,但是PV还没有被集群回收
Failed:        PV在自动回收中失败了

pvc的状态

Pending:PVC 正在等待可用的 PV。
Bound:PVC 已经与一个可用的 PV 绑定。
Lost:PVC 与绑定的 PV 断开连接,无法恢复

Storage Classes

动态PV

在创建PV前,需要先创建PV中指定的存储,PV才能使用该存储。如果能在应用程序需要时自动配置卷就好了,这就需要Storage Class。由SC创建的PV称为动态PV。之所以称为动态,是因为PV的创建是自动的,不需要手动创建

Stotage CLass的使用

先创建SC

sc-definition.yamlapiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: google-storage
provisioner: kubernetes.io/gce-pd  # 存储提供者,也可以叫后端存储驱动

创建PVC引用SC

pvc-definition.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
sepc:
  accessModes:
    - ReadWriteOnce
  storageClassName: google-storage
  resources:
    requests:
      storage: 500Mi

pod中指定卷为PVC

pod-definition.yaml...
volumes:
- name: data-volume
  persistenVolumeClaim:
    claimName: myclaim

0d105447b0e3b9c48417be286ed935f3.png


持久化卷类型

pv类型以插件形式实现。k8s目前支持一下插件类型

AWSElasticBlockStore: AWS公有云提供的ElasticBlockStore。

AzureFile: Azure公有云提供的File。

AzureDisk: Azure公有云提供的Disk。

CephFS: 一种开源共享存储系统。

FC(Fibre Channel) : 光纤存储设备。

FlexVolume: 一种插件式的存储机制。

Flocker: 一种开源共享存储系统。

GCEPersistentDisk: GCE公有云提供的PersistentDisk。

Glusterfs: 一种开源共享存储系统。

HostPath: 宿主机目录, 仅用于单机测试。

iSCSI: iSCSI存储设备。

Local: 本地存储设备, 从Kubernetes 1.7版本引入, 到1.14版本时更新为稳定版, 目前可以通过指定块(Block) 设备提供Local PV, 或通过社区开发的sig-storage-local-static-provisioner插件(https://github.com/kubernetes-sigs/sigstorage-local-static-provisioner) 来管理Local PV的生命周期。

NFS: 网络文件系统。

Portworx Volumes: Portworx提供的存储服务。

Quobyte Volumes: Quobyte提供的存储服务。

RBD(Ceph Block Device) : Ceph块存储。

ScaleIO Volumes: DellEMC的存储设备。

StorageOS: StorageOS提供的存储服务。

VsphereVolume: VMWare提供的存储系统。每种存储类型都有各自的特点, 在使用时需要根据它们各自的参数进行设置

下表描述了不同的存储提供者支持的访问模式

Volume Plugin ReadWriteOnce ReadOnlyMany0 ReadWriteMany
AWSElasticBlockStore
AzureFile
AzureDisk
CephFS
Cinder
FC
FlexVolume 视驱动而定
Flocker
GCEPersistentDisk
GlusterFS
HostPath
iSCSI
Quobyte
NFS
RBD
VsphereVolume
PortworxVolume
ScaleIO
StorageOS

持久化演示说明-NFS

一、安装NFS服务器

yum install -y nfs-common nfs-utils rpcbind
mkdir /nfsdata
chmod 666 /nfsdata
chown nfsnobody /nfsdatavim /etc/exports
输入/nfsdata *(rw,no_root_squash,no_all_squash,sync)systemctl start rpcbind
systemctl start nfs

二、部署pv

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfspv1
spec:
  capacity:
srotage: 1Gi
accessModes:
-  ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: nfs
nfs:
  path: /data/nfs
  server: 10.66.66.10

三、创建服务并使用pvc

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
app: nginx
---
apiVersion: v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
matchLabels:
  app: nginx
  serviceName: “nginx”
  replicas: 3
  template:
metadata:
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: k8s.gcr.io/nginx-slim:0.8
    ports:
    - containerPort: 80
      name: web
    volumeMounts:
    - name: www
      mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
  spec:
accessModes: [“ReadWriteOnce”]
storageClassName: “nfs”
resources:
  requests:
    storage: 1Gi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29696.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

emptyDir-gitRepo

emptyDir & gitRepo k8s存储类型分类(卷的类型) 临时存储 emptyDir 用于存储临时数据的简单空目录 gitRepo 通过检出Git仓库的内容来初始化的卷持久存储 hostPath 用于将目录从工作节点的文件系统挂载到pod中 nfs …

中间件集群部署

中间件集群部署中间件集群部署 1)反向网关配置 2)运行反向网关和中间件,开启顺序不分先后3)通过反向网关,以指定负载均衡方式访问中间件 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18183673

自定义表单工作流的优势介绍

今天,就跟大家一起分享低代码技术平台以及自定义表单工作流的相关知识。当前,应用低代码技术平台可以助力企业提高效率,降低开发成本,实现个性化场景定制,因而越来越得到了客户的信赖与喜爱。很多客户朋友询问自定义表单工作流的优势和特点,为了帮助大家解决这个疑问,今…

746-便携式8路高频电压电流信号测试仪

便携式8路高频电压电流信号测试仪一、平台简介便携式手提8路高频电压电流信号测试仪,以FPGA AD卡和X86主板为基础,构建便携式的手提设备。FPGA AD卡是以Kintex-7XC7K325T PCIeX4的AD卡,支持8路24bit AD采集。北京太速科技,平台默认操作系统为win7 64位系统;具备丰富的外设…

黑马-Vue前端

前言 HTML:负责网页的结构(标签:form表单 / table表格 / a /div/span) CSS:负责网页的表现(样式:color/font/background/width/height) JavaScript:负责网页的行为(交互效果) 创建一个文件夹 输入cmd执行 code . 回车,打开VsCodeVue 一款用于构建用户界面的渐进式…

httpsok-v1.11.0支持CDN证书自动部署

🔥httpsok-v1.11.0支持CDN证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻松搞定SSL证书自动续期 v1.11.0 版本新特性✅修复某些情况下无法识别主配置文件n…

架构师狂掉1024根头发,总算搞定SSL通配证书

🔥架构师狂掉1024根头发,总算搞定SSL通配证书 经过许多个日日夜夜的持续开发(掉了1024根头发),总算搞定了v1.11.0版本,修复和解决了许多问题,也支持CDN和OSS证书的部署。 v1.11.0 版本新特性✅修复某些情况下无法识别主配置文件nginx.conf问题 ✅修复某些证书出现的签名…

SQL脚本中存在很多括号,无法直观进行匹配。

解决方案1:SSMS中找到前括号按下空格或tab,会自动匹配到对应的后括号,如下图。解决方案2:使用在线格式化工具进行格式化,该工具格式化功能更强大且会自动去除多余无意义的括号组。 https://tool.oschina.net/codeformat/sql 在线代码格式化 (oschina.net)