k8s之持久存储卷PV和PVC
一、简介
在前边文章中可以看到,Kubernetes中依赖后端存储包括:NFS、Ceph、块存储等存储设备实现数据的远程存储以及数据持久化。
使用这些网络存储资源需要工程师对存储有一定的了解,并需要在工作节点上对接这些存储,对于非专业工程师造成了一些困扰。
Kubernetes为了解决这些问题,定义了两个标准的Kubernetes资源即PV和PVC,为了使Kubernetes工程师从后端存储的逻辑中解耦出来。
Kubernetes工程师无需关注后端存储的逻辑,用户只需要声明需求,Kubernete中的pv-controller会检查用户声明的需求和已有特性,找一个最接近需求的PV,和PVC建立绑定关系。至于后端存储的细节无需了解。
PV主要承载存储细节,用户一般通过PVC申请存储资源。
PV是标准的资源类型,除了负责关联至后端存储系统外,它通常还需要定义支持的存储特性
- Volume Mode:当前PV卷提供的存储空间模型,分为设备和文件系统两种
- StorageClassName:当前PV隶属的存储类;
- AccessMode:支持的访问模型,分为单路读写、多路读写和多路只读三种
- Size:当前PV允许使用的空间上限
二、PV的两种置备方式
静态置备:由管理员通过存储细节对接到远程存储服务的某存储单元进行手动创建,
动态置备:管理员基于SC对接远程存储服务的管理API,根据用户PVC中声明的需求,自动请求存储服务创建适配的存储单元,并自动把该存储单元创建成PV。
三、准备NFS服务器
root@k8s-node03:~# mkdir /data/redis02
root@k8s-node03:~# vi /etc/exports
root@k8s-node03:~# cat /etc/exports
/data/redis 192.168.10.0/24(rw,no_root_squash,no_subtree_check)
/data/redis02 192.168.10.0/24(rw,no_root_squash,no_subtree_check)
root@k8s-node03:~# exportfs -rav
exporting 192.168.10.0/24:/data/redis02
exporting 192.168.10.0/24:/data/redis
四、创建NFS类型的PV
root@k8s-master01:~/learning-k8s/examples/volumes# cat pv-nfs-demo.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs-demo
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain #回收策略
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: "/data/redis02" #nfs的共享目录
server: 192.168.10.13 #nfs服务端地址
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl apply -f pv-nfs-demo.yaml
persistentvolume/pv-nfs-demo created
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-nfs-demo 5Gi RWX Retain Available 7s
五、声明PVC绑定PV
root@k8s-master01:~/learning-k8s/examples/volumes# cat pvc-demo.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-demo
spec:
accessModes: ["ReadWriteMany"]
volumeMode: Filesystem
resources:
requests:
storage: 3Gi
limits:
storage: 10Gi
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl apply -f pvc-demo.yaml
persistentvolumeclaim/pvc-demo created
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-nfs-demo 5Gi RWX Retain Bound default/pvc-demo 6m46s
- 以上看到PV的状态从Available转变成Bound
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-demo Bound pv-nfs-demo 5Gi RWX 2m9s
六、Pod消费PVC
root@k8s-master01:~/learning-k8s/examples/volumes# cat pod-with-pvc-demo.yaml
apiVersion: v1
kind: Pod
metadata:
name: redis-with-pvc
spec:
containers:
- name: redis
image: redis:7-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
name: redisport
volumeMounts:
- mountPath: /data
name: redis-pvc-vol
volumes:
- name: redis-pvc-vol
persistentVolumeClaim: #卷声明请求
claimName: pvc-demo #对应PVC的名称
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl apply -f pod-with-pvc-demo.yaml
pod/redis-with-pvc created
root@k8s-master01:~/learning-k8s/examples/volumes# kubectl get pod
NAME READY STATUS RESTARTS AGE
redis-with-pvc 1/1 Running 0 6s
k8s之持久存储卷PV和PVC的更多相关文章
- k8s系列---存储卷pv/pvc。configMap/secert
因为pod是有生命周期的,pod一重启,里面的数据就没了.所以我们需要数据持久化存储. 在k8s中,存储卷不属于容器,而是属于pod.也就是说同一个pod中的容器可以共享一个存储卷. 存储卷可以是宿主 ...
- 持久化存储之 PV、PVC、StorageClass
PV介绍: PersistentVolume(PV)是群集中由管理员配置的一块存储. 它是集群中的资源,就像节点是集群资源一样. PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个 ...
- 容器编排系统K8s之PV、PVC、SC资源
前文我们聊到了k8s中给Pod添加存储卷相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14180752.html:今天我们来聊一下持久存储卷相关话题 ...
- k8s的pv和pvc简述
pvc:资源需要指定:1.accessMode:访问模型:对象列表: ReadWriteOnce – the volume can be mounted as read-write by a s ...
- k8s之PV、PVC
目录 一.PVC和PV 1.1 PV概念 1.2 PVC概念 1.3 PV与PVC之间的关系 1.4 两种PV的提供方式 二.基于nfs创建静态PV资源和PVC资源 2.1 配置nfs存储(192.1 ...
- k8s存储卷概述
pod本身具有生命周期,故其内部运行的容器及其相关数据自身均无法持久存在.docker支持配置容器使用存储卷将数据持久存储于容器自身文件系统之外的存储空间中,它们可以是节点文件系统或网络文件系统之上的 ...
- Kubernetes学习之路(十六)之存储卷
目录 一.存储卷的概念和类型 二.emptyDir存储卷演示 三.hostPath存储卷演示 四.nfs共享存储卷演示 五.PVC和PV的概念 六.NFS使用PV和PVC 1.配置nfs存储 2.定义 ...
- Kubernetes 学习12 kubernetes 存储卷
一.概述 1.我们此前讲过根据应用本身是否需要持久存储数据以及某一次请求和之前的请求是否有联系,可以分为四类应用 a.有状态,要存储 b.有状态,无持久存储 c.无状态,要存储 d.无状态,无持久存储 ...
- kubernets之pv以及pvc
一 持久卷以及持久卷声明的由来 由于不管是哪种卷,开发者都需要提前预知kubernets集群里面的存储类型,这样就在一定程度上违背了kubernets集群的设计理念,kubernets的设计理念是在由 ...
- Kubernetes集群PV和PVC详解
Kubernetes集群高级存储资源PV及PVC 文章目录 Kubernetes集群高级存储资源PV及PVC 1.高级存储PV和PVC概念部分 2.PV和PVC资源的生命周期 3.PV资源介绍与案例配 ...
随机推荐
- Nebula Graph 在众安保险的图实践
本文首发于 Nebula Graph Community 公众号 互联网金融的借贷同传统信贷业务有所区别,相较于传统信贷业务,互联网金融具有响应快.数据规模大.风险高等特点.众安保险主要业务是做信用保 ...
- [QT] 记录一些使用技巧
目录 概述 打开窗口 弹出消息框 判断文件存在 获取时间 获取子控件 TableWidget设置不可编辑 QT QString判断纯数字 Qt 保存文件选择器 读写ini 概述 最近花了好几天的时间编 ...
- Android switch语句报错Constant expression required
方案一 :可以用 if来替代 如下 原因:在Android Studio中使用JDK17以上版本,会出现switch语句报错"Constant expression required&qu ...
- C语言之牛必克拉斯 main() 函数
C语言之main()函数 C程序最大的特点就是所有的程序都是用函数来装配的.main()称之为主函数,是所有程序运行的入口.其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的 ...
- 真实开发中-redis在项目中的应用场景
一.需求描述 从自己当前负责参与开发的一个项目中来看,redis主要的应用场景有如下几个,第一个是保存用户信息,这个需要频繁的获取.比如 在打开某一个页面进行查询时,就先需要获取用户信息,看用户是否具 ...
- vscode 注释后 光标下移(注释后光标快速定位下一行) 仿照idea
VSCode 注释后光标快速定位下一行 1. 安装插件 Multi-command Multi-command 2.打开 Keybinding.json Keybinding.json 左下角齿轮图标 ...
- 【深度学习】神经网络正则化方法之Dropout
前言 正则化是一种广泛用于机器学习和深度学习的手段,它的目的就是阻碍模型过度学习(过拟合),从而提升算法的泛化能力. Dropout 是一种常见的缓解过拟合的方法.接下来,本文将从原理和实践来介绍Dr ...
- linux下命令行打开文件夹窗口
方法一: 使用自带的命令:nautilus . 打开当前文件夹 nautilus . 打开指定路径文件夹 nautilus ddd/ccc/ 方法二:xdg-open xdg-open 命令相当于在 ...
- 可穿戴设备主控制器芯片AMA3B 源码解析之初体验
一 背景和缘由 现在的mcu非常多,在超低功耗mcu这块,能赢得市场穿戴式设备使用的产品的确不多,以前是的是stm32 L系列,可是,随着L系列的缺货涨价和技术指标没有快速的发展,很多厂商都抛弃了 ...
- ESP8266 SPI 开发之软硬基础分析
一 什么是SPI接口? SPI是一种高速.高效率的串行接口技术.通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换.SPI是一个环形结构,通信时需要至少4根线 ...