k8s的pv和pvc简述
pvc:资源需要指定:
1.accessMode:访问模型;对象列表:
ReadWriteOnce – the volume can be mounted as read-write by a single node: RWO - ReadWriteOnce一人读写
ReadOnlyMany – the volume can be mounted read-only by many nodes: ROX - ReadOnlyMany 多人只读
ReadWriteMany – the volume can be mounted as read-write by many nodes: RWX - ReadWriteMany多人读写
2.resource:资源限制(比如:定义5GB空间,我们期望对应的存储空间至少5GB。)
3.selector:标签选择器。不加标签,就会在所有PV找最佳匹配。
4.storageClassName:存储类名称:
5.volumeMode:指后端存储卷的模式。可以用于做类型限制,哪种类型的PV可以被当前claim所使用。
6.volumeName:卷名称,指定后端PVC(相当于绑定)
PV和PVC是一一对应关系,当有PV被某个PVC所占用时,会显示banding,其它PVC不能再使用绑定过的PV。
PVC一旦绑定PV,就相当于是一个存储卷,此时PVC可以被多个Pod所使用。(PVC支不支持被多个Pod访问,取决于访问模型accessMode的定义)。
PVC若没有找到合适的PV时,则会处于pending状态。
PV是属于集群级别的,不能定义在名称空间中。
PVC时属于名称空间级别的。
PV的reclaim policy选项:
默认是Retain保留,保留生成的数据。
可以改为recycle回收,删除生成的数据,回收pv
delete,删除,pvc解除绑定后,pv也就自动删除。
例:在nfs服务器上,使用nfs创建多个数据卷,在k8s集群中定义PV/PVC,让pod关联PVC
1.在/data/volumes/创建多个目录:v1,v2,v3,v4,v5,修改/etc/exports文件,使数据卷单独输出。
/data/volumes/v1 192.168.1.0/(rw,no_root_squash)
/data/volumes/v2 192.168.1.0/(rw,no_root_squash)
/data/volumes/v3 192.168.1.0/(rw,no_root_squash)
/data/volumes/v4 192.168.1.0/(rw,no_root_squash)
/data/volumes/v5 192.168.1.0/(rw,no_root_squash)
exportfs -arv:显示nfs当前输出的可以挂载的数据卷。
showmount -e :显示nfs导出的数据卷
2.在k8s集群中定义pv:
vim pv-demo.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv001
labels:
name: pv001
spec:
nfs:
path: /data/volumes/v1
server: k8s-node2
accessModes: ["ReadWriteMany","ReadWriteOnce","ReadOnlyMany"]
capacity:
storage: 2Gi
---
...pv002
---
...pv003
...创建5个以上内容,修改name和path等参数
应用:kubectl apply -f pv-demo.yaml
查看:kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv001 2Gi RWO,ROX,RWX Retain Available 56m
pv002 5Gi RWO,ROX Retain Available 56m
pv003 3Gi ROX,RWX Retain Available 56m
pv004 10Gi RWO Retain Available 56m
pv005 15Gi ROX Retain Available 56m
3.创建PVC和pod
vim pod-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
namespace: default
spec:
accessModes: ["ReadWriteOnce"] ##注:这个访问模型必须是PV中存在的访问模型的子集,否则会找不到合适的PV,会一直Pending。
resources:
requests:
storage: 6Gi
---
apiVersion: v1
kind: Pod
metadata:
name: myapp-pv
namespace: default
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: html
containerPort:
volumeMounts:
- name: nfs
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs
persistentVolumeClaim:
claimName: mypvc
应用:kubectl apply -f pod-pvc.yaml
查看pvc:kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mypvc Bound pv004 10Gi RWO 4s
查看pv:kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv001 2Gi RWO,ROX,RWX Retain Available 56m
pv002 5Gi RWO,ROX Retain Available 56m
pv003 3Gi ROX,RWX Retain Available 56m
pv004 10Gi RWO Retain Bound default/mypvc 56m
pv005 15Gi ROX Retain Available 56m 、
如此pvc就绑定在合适的pv上了。绑定的pv是pv004,说明pod的/usr/share/nginx/html挂载在nfs服务器/data/volumes/v4目录下。
4.查看pod:kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
myapp-pv / Running 24s 10.244.1.141 k8s-node2 <none> <none>
5.在nfs服务器上,找到/data/volumes/v4目录,写个测试文件:
vi /data/volumes/v4/index.html
<h1>Smbands</h1>
测试:访问podIP
curl 10.244.1.141
<h1>Smbands</h1>
k8s的pv和pvc简述的更多相关文章
- 容器编排系统K8s之PV、PVC、SC资源
前文我们聊到了k8s中给Pod添加存储卷相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14180752.html:今天我们来聊一下持久存储卷相关话题 ...
- k8s之PV、PVC、StorageClass详解
导读 上一篇写了共享存储的概述以及一个简单的案例演示.这一篇就写一下PV和PVC. PV是对底层网络共享存储的抽象,将共享存储定义为一种"资源",比如Node也是容器应用可以消费的 ...
- 7.2 k8s 基于PV、PVC搭建zookeeper 3节点集群
1.PV,PVC介绍 1.1.StorageClass & PV & PVC关系图 Volumes 是最基础的存储抽象,其支持多种类型,包括本地存储.NFS.FC以及众多的云存储,我们 ...
- 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 使用NFS 创建PV和PVC的例子 学习From https://blog.csdn.net/xts_huangxin/article/details/51494472
1. 获取资料 网址: https://blog.csdn.net/xts_huangxin/article/details/51494472 感谢原作者 这里面 按照自己的机器情况进行了学习模仿 ...
- 4.k8s存储之Volume、PV、PVC和StatefulSet
3.Volume 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的 ...
- k8s数据持久化,pv和pvc
k8s中为什么使用存储: k8s中的副本控制器保证了pod的始终存储,却保证不了pod中的数据.只有启动一个新pod的,之前pod中的数据会随着容器的删掉而丢失! pv和pvc的概念: Persist ...
- K8s存储卷、pv和pvc的使用
emptyDIR 临时目录 hostPath :使用主机的路径 网络存储: 传统的设备存储:NAS,SAN 分布式存储:glusterfs,rbd,cephfs 云存储:EBS,Azure,阿里云的 ...
- PV、PVC和Storeclass等官方内容翻译
k8s1.13版本 PV apiVersion: v1 kind: PersistentVolume metadata: name: filesystem-pvc spec: capacity: #未 ...
随机推荐
- python大战机器学习——数据预处理
数据预处理的常用流程: 1)去除唯一属性 2)处理缺失值 3)属性编码 4)数据标准化.正则化 5)特征选择 6)主成分分析 1.去除唯一属性 如id属性,是唯一属性,直接去除就好 2.处理缺失值 ( ...
- java监听器原理理解与实现
监听器模型涉及以下三个对象,模型图如下: (1)事件:用户对组件的一个操作,称之为一个事件(2)事件源:发生事件的组件就是事件源(3)事件监听器(处理器):监听并负责处理事件的方法 执行顺序如下: 1 ...
- man时括号里的数字是啥意思
https://www.cnblogs.com/istarstar/p/7851233.html 具体含义可以man man来查看(自己查自己). MANUAL SECTIONS The standa ...
- map 常用方法
map遍历: Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while(it.hasNext()) { Map.E ...
- Oracle使用jdbc调用带游标参数的存储过程
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- 《C#高效编程》读书笔记09-避免在API中使用转换操作符
转换操作符为类之间引入了一种"可替换性"(substitutability)."可替换性"表示一个类的实例可以替换为另一个类的实例. public class ...
- 从零开始的全栈工程师——js篇2.13(字符串与数组的方法)
基类Object的子类有 Function Array Number Boolean String Date Math RegExp 函数 数组 数字 布尔 字符串 日期 算数 正则 都 ...
- 可视化工具Navicat的使用/pymysql模块的使用
一.可视化工具Navicat的使用 1.官网下载:http://www.navicat.com/en/products/navicat-for-mysql 2.网盘下载:http://pan.baid ...
- Python之简易计算器
思路:学会运用正则表达式把需要先进行计算的匹配出来,然后再一步步的去算,把先算出来的值替换原来的值,再进一步的把++,--等号变成我们正常的数学上的符号,然后再进行一步步的替换,最终把带括号的都计算出 ...
- 推荐一个VS2015 插件 Favorite Documents
随着解决方案越来越庞大,查找某个文件变的非常费神,考眼力 有了这个工具我们可以将常用的几个文件或文件夹添加到收藏夹中,随时展开双击即可到达收藏位置 从 视图>其他窗口中打开 安装 在Vi ...