Kubernetes---存储--Persistent Volume【PV】
⒈概念
1.PersistentVolume(PV)
apiVersion: v1 kind: PersistentVolume metadata: name:pve003 spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadNriteOnce persistentVolumeReclaimPolicy: Recycle storageClassName: slow mountOptions: - hard - nfsvers=4.1 nfs: path: /tmp server: 172.17.0.2
⒋pv的访问模式
PersistentVolume可以以资源提供者支持的任何方式挂载到主机上。如下表所示,供应商具有不同的功能,每个PV的访问模式都将被设置为该卷支持的特定模式。例如,NFS可以支持多个读/写客户端,但特定的NFSPV可能以只读方式导出到服务器上。每个PV都有一套自己的用来描述特定功能的访问模式
·ReadWriteOnce——该卷可以被单个节点以读/写模式挂载
·ReadOnlyMany——该卷可以被多个节点以只读模式挂载
·ReadWriteMany——该卷可以被多个节点以读/写模式挂载
在命令行中,访问模式缩写为:
·RWO-ReadWriteOnce
·ROX-ReadOnlyMany
·RWX-ReadWriteMany
<!-- 一个卷一次只能使用一种访问模式挂载,即使它支持很多访问模式。例如,GCEPersistentDisk可以由单个节点作为ReadWriteOnce模式挂载,或由多个节点以ReadOnlyMany模式挂载,但不能同时挂载 -->
⒌回收策略
·Retain(保留)——手动回收
·Recycle(回收)——基本擦除(rm-rf /thevolume/*)
·Delete(删除)——关联的存储资产(例如AWS EBS、GCE PD、Azure Disk 和OpenStack Cinder卷)将被删除
当前,只有NFS和HostPath 支持回收策略,Recycle已被废弃。AWS EBS、GCE PD、Azure Disk 和Cinder 卷支持删除策略
⒍pv状态
卷可以处于以下的某种状态:
·Available(可用)———块空闲资源还没有被任何声明绑定
·Bound(已绑定)——卷已经被声明绑定
·Released(已释放)——声明被删除,但是资源还未被集群重新声明
·Failed(失败)——该卷的自动回收失败
命令行会显示绑定到PV的PVC的名称
⒎实验-持久化演示说明-NFS
1.安装NFS服务器
yum install -y nfs-common nfs-utils rpcbind mkdir /nfsdata chmod 777 /nfsdata chown nfsnobody /nfsdata cat /etc/exports /nfsdata *(rw,no_root_squash,no_all_squash,sync)
systemctl start rpcbind systemctl start nfs
2.在其他节点上安装客户端
yum -y install nfs-utils rpcbind
mkdir /test
showmount -e 192.168.66.100
mount -t nfs 192.168.66.100:/nfsdata /test/
cd /test/
ls
umount /test/
3.部署PV
apiVersion: v1 kind: PersistentVolume metadata: name: nfspv1 spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs nfs: path: /nfsdata server: 192.168.66.100
4.创建服务并使用PVC
apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/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
⒏关于 Statefulset
Statefulset使用场景:
稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC 来实现。
稳定的网络标识符,即Pod 重新调度后其iPodName 和 HostName不变。
有序部署,有序扩展,基于init containers 来实现。
有序收缩。
作者:奇
出处:https://www.cnblogs.com/fanqisoft/p/12810894.html
版权:本作品采用「本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-04-30 .Net Core使用AutoMapper做对象关系映射