1. 综述

当前,存储的方式和种类有很多,并且各种存储的参数也需要非常专业的技术人员才能够了解。在Kubernetes集群中,放了方便我们的使用和管理,Kubernetes提出了PV和PVC的概念,这样Kubernetes集群的管理人员就可以将注意力集中到Kubernetes集群中来,而无需操心后端的存储设备了。
Kubernetes集群存储架构如下所示:

从上图可以看出,底层的存储可以使各种类型,包括NFS、Ceph、iSCSI等等,而Kubernetes会把这些存储统一抽象为PV。PV,即Persistent Volume,是集群中配置的存储资源。PVC,即Persistent Volume Claim,是用户存储的请求,通常我们在一个Pod中定义一个存储卷,定义的时候会指定该存储卷的相关信息,比如空间大小、可读可写等属性。但是PVC并不是真正的存储空间,Pod的PVC和PV之间必须建立某种联系,这样才能使得Pod可以调用实际存储空间。

2. PersistentVolume(PV

  PersistentVolume(PV)是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像节点是集群资源一样。 PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。 此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。

3. PersistentVolumeClaim(PVC

  PersistentVolumeClaim(PVC)是由用户进行存储的请求。 它类似于pod。 Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式(例如,可以一次读/写或多次只读)。

  虽然PersistentVolumeClaims允许用户使用抽象存储资源,但是PersistentVolumes对于不同的问题,用户通常需要具有不同属性(例如性能)。群集管理员需要能够提供各种PersistentVolumes不同的方式,而不仅仅是大小和访问模式,而不会让用户了解这些卷的实现方式。对于这些需求,有StorageClass 资源。

4. StorageClass

  StorageClass为管理员提供了一种描述他们提供的存储的“类”的方法。 不同的类可能映射到服务质量级别,或备份策略,或者由群集管理员确定的任意策略。 Kubernetes本身对于什么类别代表是不言而喻的。 这个概念有时在其他存储系统中称为“配置文件”。

  PVC和PV是一一对应的。

5. 实战

5.1 准备nfs服务

准备nfs存储路径

[root@nfs ~]# cd /data/volumes/
[root@nfs volumes]# mkdir v{1,2,3,4,5}
[root@nfs volumes]# ls
v1  v2  v3  v4  v5
[root@nfs volumes]# echo "<h1>NFS stor 01</h1>" > v1/index.html
[root@nfs volumes]# echo "<h1>NFS stor 02</h1>" > v2/index.html
[root@nfs volumes]# echo "<h1>NFS stor 03</h1>" > v3/index.html
[root@nfs volumes]# echo "<h1>NFS stor 04</h1>" > v4/index.html
[root@nfs volumes]# echo "<h1>NFS stor 05</h1>" > v5/index.html
配置nfs将新建的路径提供共享存储
[root@nfs volumes]# vim /etc/exports
/data/volumes/v1        192.168.130.0/24(rw,no_root_squash)
/data/volumes/v2        192.168.130.0/24(rw,no_root_squash)
/data/volumes/v3        192.168.130.0/24(rw,no_root_squash)
/data/volumes/v4        192.168.130.0/24(rw,no_root_squash)
/data/volumes/v5        192.168.130.0/24(rw,no_root_squash)
[root@nfs volumes]# vim /etc/exports
/Users/harry/getting-started/data/volumes/v1 -alldirs  -maproot=root:wheel -network=192.168.0.0 -mask=255.255.0.0

查看nfs的配置

LOG 实践

apiVersion: apps/v1
kind: Deployment
metadata:name: test123labels:app: test123
spec:replicas: 1template:metadata:name: test123labels:app: test123spec:containers:- name: test123image: test-demo1:v1.0volumeMounts:- mountPath: /Users/harry/eclipse-workspace/test_spring_cloud_kubernatename: mydir- mountPath: /Users/harry/eclipse-workspace/test_spring_cloud_kubernate/test.logname: myfileimagePullPolicy: IfNotPresentports:- containerPort: 8080resources: requests: cpu: 100mmemory: 128Milimits:cpu: 250mmemory: 256MirestartPolicy: Alwaysvolumes:- name: mydirhostPath:# 确保文件所在目录成功创建。path: /Users/harry/eclipse-workspace/test_spring_cloud_kubernatetype: DirectoryOrCreate- name: myfilehostPath:path: /Users/harry/eclipse-workspace/test_spring_cloud_kubernate/test.logtype: FileOrCreateselector:matchLabels:app: test123
---
apiVersion: v1
kind: Service
metadata:name: test123-servicelabels:app: test123-service
spec:selector:app: test123ports:- port: 8087targetPort: 8089nodePort: 30082type: NodePort

我就想存个文件,怎么这么麻烦 ?- k8s PV、PVC、StorageClass 的关系 - 掘金

注意几点

1. pv不是一个namespace资源 pv是跨namespace的共享对象,pvc是有namespace特征的

2.

其它

NFS:Network File System( 网络文件系统),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。

Mac 开启nfs 服务

$ sudo nfsd enable
$ sudo nfsd start

其它

# 服务命令
sudo nfsd checkexports
sudo nfsd enable
sudo nfsd disable
sudo nfsd start
sudo nfsd stop
sudo nfsd restart
sudo nfsd status
showmount -e 192.168.0.10

Kubernetes之PV与PVC相关推荐

  1. kubernetes系列—PV和PVC详解

    1.认识PV/PVC/StorageClass 1.1 介绍 管理存储是管理计算的一个明显问题.该PersistentVolume子系统为用户和管理员提供了一个API,用于抽象如何根据消费方式提供存储 ...

  2. Kubernetes PV和PVC 常见问题

    文章目录 Kubernetes PV和PVC 常见问题 PV和PVC的关系 删除Kubernetes的PV和PVC时状态一直为Terminating PVC创建后一直处在Pending状态 Kuber ...

  3. Kubernetes — PV、PVC

    目录 文章目录 目录 PV.PVC PV.PVC 的生命周期 通过 NFS 实现持久化存储 NFS Server 安装 NFS Client 挂载 Kubernetes 部署 nfs-client-p ...

  4. kubernetes 磁盘、PV、PVC

    6.1.介绍卷 6.1.1.卷的类型 emptyDir-用于存储临时数据的简单空目录 hostPath-用于将目录从工作节点的文件系统挂载到pod nfs-挂载到pod中的NFS共享卷. 还有其他的如 ...

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

    kubernetes系列11-PV和PVC详解 原文:kubernetes系列11-PV和PVC详解 本文收录在容器技术学习系列文章总目录 1.认识PV/PVC/StorageClass 1.1 介绍 ...

  6. kubernetes中的PV、PVC

    目录 一.statfulset 1.创建顺序 2.收缩顺序 二.PV PVC 1.PV 状态/生命周期 2.PVC 3.nfs 4.PVC 三.emptyDir存储卷 四.hostPath存储卷 五. ...

  7. Kubernetes——PV与PVC

    目录 一.PV和PVC详解 二.PV和PVC生命周期 2.1 Provisioning 2.2 Binding 2.3 Using 2.4 Releasing 2.5 Reclaiming 2.6 R ...

  8. Kubernetes详解(三十七)——PV与PVC

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Kubernetes PV与PVC. 一.PV和PVC详解 当前,存储的方式和种类有很多,并且各种存储的参数也需要非常专业的技术人员才能够了解. ...

  9. 多个containers 共用一个pvc_深入k8s:Kubernetes持久卷PV、PVC及源码分析

    推荐阅读:膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了 从一个例子入手PV.PVC Kubernetes 项目引入了一组叫作 Persistent Volume Cla ...

最新文章

  1. 使用thymeleaf中超链接失效
  2. VUE3 项目自定义修改网页标题和图标
  3. 电气技术应用和计算机应用,电气技术应用专业介绍-1.ppt
  4. C#LeetCode刷题之#633-平方数之和( Sum of Square Numbers)
  5. 18秋学期计算机基础在线作业2,东北大学(本部)18秋学期《计算机应用基础》在线作业2答案解析.doc...
  6. Linux-第二篇常用命令
  7. java怎么递归_什么是递归?用Java写一个简单的递归程序
  8. 强烈推荐!!!Ubuntu19.04安装向日葵踩到的坑【尤其是ubuntu 19.04 遇到了libpng12.so.0 导致无法apt 更新!!!!】
  9. Gamma 分布函数可加性证明
  10. 大数据商业化应用的价值和应用场景是什么?
  11. NTFS与FAT 32的区别
  12. keras中的后端backend及其相关函数(K.prod,K.cast)
  13. easyExcel工具类使用
  14. 魔兽 服务器 角色 最多,魔兽科普:国服人最多的几个服务器都什么来头
  15. 推荐算法之AFM模型(注意力机制的引入)
  16. echo /sbin/mdev > /proc/sys/kernel/hotplug 作用解析
  17. vdbench运行报错:java.net.NoRouteToHostException: No route to host (Host unreachable)
  18. java学习笔记02
  19. C 语言常量pi,如何在C中使用PI常数
  20. 量子计算机 intel,Intel量子计算机技术 首次突破1开尔文

热门文章

  1. 网站排名优化方法_快速排名窍门
  2. 图片隐写之LSB(Least Significant Bit)原理及其代码实现
  3. 在线重定义在线更换分区表分区类型
  4. KNN算法和Kernel KNN算法的区别
  5. mysql 1146 错误处理
  6. 2月编程语言排行榜谁还没有看?
  7. MessageFormatter
  8. 怎样重启Gunicorn
  9. SSE(Server-sent Events)实现Web消息推送(SpringBoot)
  10. JAVA 接口(interface)