目的: 为了屏蔽底层存储实现的细节, 让用户方便使用同时让管理员方便管理, 引入了pv与pvc两种资源对象实现对存储的管理子系统

pv: 对底层网络共享存储的抽象, 将共享存储定义为一种资源

pvc: 用户对存储资源的一个神奇, 就像pod消费node资源一样, pvc能够消费pv资源, pvc可以申请特定存储空间和访问模式

StorageClass :标记存储资源的特性和性能, 在1.6版本, StorageClass与动态资源供应的机制得到了完善, 实现了存储卷的按需创建

pv详解

apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
mountOptions:
- hard
- nolock
- nfsvers=3
nfs:
path: /tmp
server: 172.17.0.2

配置参数

capacity:存储空间
volume mode: 存储模式, volumeMode=Filesystem, 包含Filesystem(文件系统)和Block(块设备)
accessModes访问模型
ReadWriteOnce: 读写权限, 并且只能被单个node挂载
ReadOnlyMany : 只读权限, 允许被多个node挂载
ReadWriteMany : 读写权限,允许被多个node挂载 reclaim policy: 回收策略, pvc和pv解绑,删除了pvc, pv里面的数据是否还保留
Retain: 保留数据, 需要手工删除
recycle: 回收, 删除里面的数据
delete: pv自杀
mountOptions:挂载参数

pv生命周期

    available : 表示当前的pv没有被绑定
bound: 已经被pvc挂载
released: pvc没有在使用pv, 需要管理员手工释放pv
failed: 资源回收失败

pvc详解

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: slow
selector:
matchLabels:
release: "stable"
matchExpressions:
- {key: environment, operator: In, values: [dev]}

参数详解

accessModes: 申请的访问模式必须与pv相同
resources: 资源请求, 既空间大小
storageClassName: 存储类别,
selector: 根据标签选择器把pvc与pv进行绑定, 动态创建pv不适合配置选择器, 注意: pv与pvc都受限于namespace, 只有相同namespace的pv丶pvc才能绑定, 同样pod与pvc和pv在同一个namespace才能挂载

案例演示: 手工创建pv与pvc

  1. 安装nfs:省略

    2.创建pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv001
labels:
name: nfs-pv001
spec:
nfs:
path: /data/nfs/vol1
server: 192.168.1.48
accessModes: ["ReadWriteMany","ReadWriteOnce"]
persistentVolumeReclaimPolicy: Recycle
capacity:
storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv002
labels:
name: nfs-pv002
spec:
nfs:
path: /data/nfs/vol2
server: 192.168.1.48
accessModes: ["ReadWriteOnce"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv003
labels:
name: nfs-pv003
spec:
nfs:
path: /data/nfs/vol3
server: 192.168.1.48
accessModes: ["ReadWriteOnce"]
capacity:
storage: 10Gi

3.创建pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc001
namespace: default
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi

4.创建pod

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.12
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
persistentVolumeClaim:
claimName: pvc001

最新文章

  1. eclipse安装zylin embedded cdt失败解决办法
  2. C++Builder组件
  3. uva 10986
  4. 最新 xode shareSDK使用分享
  5. 2016-XCTF Final-Richman
  6. Git学习笔记:Git基础
  7. Single Image Haze Removal Using Dark Channel Prior翻译
  8. RH033读书笔记(6)-Lab 7 Standard I/O and Pipes
  9. 201521123092《java程序设计》第三周学习总结
  10. hystrix隔离策略(4)
  11. 关于UTF-8和GBK编码的转换
  12. 选择排序java实现
  13. 加载所有jar包下指定文件
  14. ARM汇编编程基础之一 —— 寄存器
  15. hadoop之 安全模式及SafeModeException
  16. Linux crontab 实现每秒执行
  17. PXE_kickstart安装Ubuntu
  18. logback.xml日志文件配置
  19. php中NULL、false、0、" "有何区别?
  20. Django-JS实现的ajax

热门文章

  1. Java数组(4):数组实用功能
  2. Python 面向对象--继承,实现,依赖,关联,聚合,组合
  3. IDEA 2019中一些有偏好设置
  4. iclass 鎖機鎖程序破解限制方法-適合于有用google login 的App
  5. 深入理解C语言-二级指针三种内存模型
  6. Laravel从模型中图片的相对路径获取绝对路径
  7. Android性能专项分类
  8. 简单的GCC语法: 弄清gcc test.c 与 gcc -c test.c 的差别
  9. BandingList 泛型集合数据绑定
  10. sql server 中 like 中文不匹配问题解决就这么简单