博客
关于我
k8s之共享存储概述以及演示
阅读量:440 次
发布时间:2019-03-06

本文共 1981 字,大约阅读时间需要 6 分钟。

共享存储机制

k8s对有状态的容器应用或者需要对数据进行持久化的应用,在之前的篇章说过,可以将容器内的目录挂载到宿主机的容器目录或者emptyDir临时存储卷。

 

另外,k8s还开放了两个资源,分别是PersistentVolume(PV)和PersistentVolumeClaim(PVC),

 

这两个资源对象可允许k8s使用外部的存储设备。

 

比如在生产环境中有一个专门的文件服务器,那么就可以使用PV对文件服务器的资源进行定义,比如总共有多少容量等,然后用PVC对PV资源进行申请,申请多少容量,然后再容器里引用PVC即可。

 

PV是对底层网络共享存储的抽象,将共享存储定义为一种“资源”,比如Node也是容器应用可以消费的资源。PV由管理员创建和配置,与共享存储的具体实现直接相关。

 

PVC则是用户对存储资源的一个“申请”,就像Pod消费Node资源一样,PVC能够消费PV资源。PVC可以申请特定的存储空间和访问模式。

 

StorageClass,用于标记存储资源的特性和性能,管理员可以将存储资源定义为某种类别,正如存储设备对于自身的配置描述(Profile)。

 

根据StorageClass的描述可以直观的得知各种存储资源的特性,就可以根据应用对存储资源的需求去申请存储资源了。存储卷可以按需创建。

 

容器存储接口Container Storage Interface(CSI)机制,目标是在kubernetes与外部存储系统之前建立一套标准的存储管理接口,通过该接口为容器提供存储服务。

使用案例

在案例中,定义一个PV,申请对宿主机的资源使用,定义一个PVC,申请对PV资源的使用。然后再Pod中挂载PVC。

PV

apiVersion: v1kind: PersistentVolumemetadata:  name: pv  namespace: pv  labels:    name: pvspec:  capacity:    storage: 2Gi  accessModes:  - ReadWriteOnce  persistentVolumeReclaimPolicy: Recycle  hostPath:    path: /usr/soft/k8s/yaml/pv/storage

  

申请宿主机2G的存储。

创建:

kubectl create -f pv.yaml

  

创建后查看:

 

PVC

apiVersion: v1kind: PersistentVolumeClaimmetadata:  name: pvc  namespace: pv  labels:    name: pvcspec:  accessModes:  - ReadWriteOnce  resources:    requests:      storage: 1Gi  selector:    matchLabels:      name: pv

  

此PVC申请对上述PV的使用,申请1G存储。创建:

kubectl create -f pvc.yaml

  

创建后查看:

 

创建Pod使用PVC

apiVersion: v1kind: Podmetadata:  name: nginx  namespace: pv  labels:    name: nginxspec:  containers:  - name: nginx    image: nginx    imagePullPolicy: IfNotPresent    volumeMounts:    - name: pv      mountPath: /pvc      readOnly: false    ports:    - containerPort: 80  volumes:  - name: pv    persistentVolumeClaim:      claimName: pvc

  

使用volumes挂载pvc,挂载到容器的pvc目录。

验证

创建容器后,进入容器,在容器目录pvc添加文件,看对应的PersistemVolume中的路径是否有相应的文件。

在pvc目录创建test.txt文件

 

获取pod运行在哪个节点

 

去节点相应目录查看

 

可以看到,相应的节点目录是存在容器中创建的文件的。同理,如果在节点目录添加文件,那么容器中的挂载目录也会有相应的文件。

结尾

上述就是PV和PVC的简单使用,更详细的介绍在下一篇文章中。

 

===============================

我是Liusy,一个喜欢健身的程序员。

获取更多干货以及最新消息,请关注公众号:上古伪神

如果对您有帮助,点个关注就是对我最大的支持!!!

转载地址:http://zsvyz.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>