目的: 为了屏蔽底层存储实现的细节, 让用户方便使用同时让管理员方便管理, 引入了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

pv与pvc的更多相关文章

  1. MySQL 如何使用 PV 和 PVC?- 每天5分钟玩转 Docker 容器技术(154)

    本节演示如何为 MySQL 数据库提供持久化存储,步骤为: 创建 PV 和 PVC. 部署 MySQL. 向 MySQL 添加数据. 模拟节点宕机故障,Kubernetes 将 MySQL 自动迁移到 ...

  2. kubernetes系列11—PV和PVC详解

    本文收录在容器技术学习系列文章总目录 1.认识PV/PVC/StorageClass 1.1 介绍 管理存储是管理计算的一个明显问题.该PersistentVolume子系统为用户和管理员提供了一个A ...

  3. K8s存储卷、pv和pvc的使用

    emptyDIR 临时目录 hostPath :使用主机的路径 网络存储: 传统的设备存储:NAS,SAN 分布式存储:glusterfs,rbd,cephfs 云存储:EBS,Azure,阿里云的 ...

  4. PV、PVC和Storeclass等官方内容翻译

    k8s1.13版本 PV apiVersion: v1 kind: PersistentVolume metadata: name: filesystem-pvc spec: capacity: #未 ...

  5. K8S 使用NFS 创建PV和PVC的例子 学习From https://blog.csdn.net/xts_huangxin/article/details/51494472

    1. 获取资料 网址: https://blog.csdn.net/xts_huangxin/article/details/51494472  感谢原作者 这里面 按照自己的机器情况进行了学习模仿 ...

  6. pv和pvc状态

    原文地址:https://kubernetes.cn/topics/46 API Server 和 PVController API Server: 这个组件提供对API的支持,响应REST操作,验证 ...

  7. Kubernetes 中的pv和pvc

    原文地址:http://www.cnblogs.com/leidaxia/p/6485646.html 持久卷 PersistentVolumes 本文描述了 Kubernetes 中的 Persis ...

  8. k8s的pv和pvc简述

    pvc:资源需要指定:1.accessMode:访问模型:对象列表:    ReadWriteOnce – the volume can be mounted as read-write by a s ...

  9. PV、PVC、StorageClass讲解

    PV.PVC.StorageClass讲解 为了方便开发人员更加容易的使用存储才出现的概念.通常我们在一个POD中定义使用存储是这样的方式,我们以hostpath类型来说: apiVersion: v ...

  10. Kubernetes 系列(六):持久化存储 PV与PVC

    在使用容器之后,我们需要考虑的另外一个问题就是持久化存储,怎么保证容器内的数据存储到我们的服务器硬盘上.这样容器在重建后,依然可以使用之前的数据.但是显然存储资源和 CPU 资源以及内存资源有很大不同 ...

随机推荐

  1. k-means聚类分析范例程序

    K-Means聚类算法原理参考以下链接: https://www.cnblogs.com/pinard/p/6164214.html 2. 传统K-Means算法流程 在上一节我们对K-Means的原 ...

  2. mybatis resultMap 子元素

    resultMap constructor - 类在实例化时,用来注入结果到构造方法中 idArg - ID 参数;标记结果作为 ID 可以帮助提高整体效能 arg - 注入到构造方法的一个普通结果 ...

  3. 利用sklearn的Pipeline简化建模过程

    很多框架都会提供一种Pipeline的机制,通过封装一系列操作的流程,调用时按计划执行即可.比如netty中有ChannelPipeline,TensorFlow的计算图也是如此. 下面简要介绍skl ...

  4. mysql数据库设置密码

    1.用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); ...

  5. C学习笔记-第一个C语言程序

    第一个C语言程序 #include<stdio.h> //1 int main() //2 { printf("This is a C language"); //3 ...

  6. JAVA上传文件到数据库

    前端代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> &l ...

  7. 请求头出现Provisional headers are shown

    provisional headers are shown 知多少:https://juejin.im/post/5c00980751882518805add83 请求头出现Provisional h ...

  8. win7 开远程记录

    1,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp HKEY_LOCAL_M ...

  9. sql中级语句

    创建联结 select n_title,n_content,t_name,t_memo from nrc_news,nrc_type where nrc_news.t_id=nrc_type.t_id ...

  10. PTA (Advanced Level)1082.Read Number in Chinese

    Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese ...