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资源介绍与案例配 ...
随机推荐
- Java super关键字使用 +案列
1 package com.bytezero.supertest; 2 /* 3 * 4 * super关键字使用 5 * 1.super:理解为 父类的 6 * 2.super可以使用调用:属性,方 ...
- C++ //内建函数对象 算数仿函数 关系仿函数 //逻辑仿函数
1 //内建函数对象 算数仿函数 关系仿函数 //逻辑仿函数 2 #include<iostream> 3 #include<string> 4 #include<fun ...
- C++ //案列-评委打分 //(容器添加 删除 算法排序 随机数 字符串追加)描述:5名选手 ABCDE,10个评委分别对每一位选手打分,去除最高分,去除评委中的 //的最低分,取平均分
1 #include<iostream> 2 #include<string> 3 #include<deque> 4 #include<vector> ...
- hadoop 3.3.5伪分布式集群部署以及遇到的问题解决
hadoop包下载 https://archive.apache.org/dist/hadoop/common/ 安装好jdk并配置环境变量 下载hadoop压缩包并放至 /data/hadoop目录 ...
- vscode 切换页签快捷键 自定义 Ctrl+H Ctrl+L 左右切换
今天需要整理写资料,需要在多个页签之间切换,发现自定义了快捷. 好久不用这个快捷键,都快忘了. vscode 切换页签快捷键 自定义 Ctrl+H Ctrl+L 左右切换
- Centos挂在U盘的时候无法挂载
网上的教学视频大部分全是以centos为教材底子--没办法更换系统了,这样方便麻! 我参考的文章: https://blog.csdn.net/shengjie87/article/details/1 ...
- 基于ads1299神经信号采集之调试总结和备忘
前记 ads129x系列芯片在生理信号采集这块应用十分广泛,也是一个不可或缺的芯片.最近几个项目用到它,算是从一个陌生到熟悉的过程吧,这个过程踩过不少坑,中间经历过很多比较大的问题困扰和折磨,花费了 ...
- 基于python的定时PC定时录音机实现
一 概念基础 这次用python实现一个定时录音机的功能,可以让你的i电脑秒变定时录音机. 这里用到了wave库,time库等.熟悉该源码,即可了解这些库的用法. 二 源码解析 1.录音函数,该函 ...
- C++ 派生类对象的构造与析构过程
C++ 派生类对象的构造与析构过程 因为基类的成员变量和派生类的成员变量在内存中的连续的(下面程序会验证这一点),如下图所示: 所以构造派生类对象的时候,构造成员变量的过程就像入栈一样: 那么很自然, ...
- c基础-指针、函数与预处理器
指针.函数.预处理器 目录 指针.函数.预处理器 1.指针 解引用 指针运算 数组和指针 const char *, char const *, char * const,char const * c ...