k8s volume
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s volume相关的知识,希望对你有一定的参考价值。
参考技术A Container(容器)中的磁盘文件都是短暂的,当容器崩溃时,kubelet会重新启动容器,但最初的文件将会丢失,容器会以最干净的状态启动。另外,当一个pod运行多个容器时,各个容器可能需要共享一些文件,kubernetes volume可以解决这两个问题1.configmap
configmap卷也可以作为volume使用,存储在configmap中的数据可以通过configmap类型的卷挂载到pod中,然后使用configmap中的数据,引用configmap对象时,只需要在volume中引用configmap的名称即可,同时也可以自定义configmap的挂载路径。
1.2emptydir
emptydir和volume不同的是,如果删除pod,emptydir卷中的数据也将会被删除,一般emptydir卷用于pod中不同的container共享数据,它可以被挂载到相同或不同的路径上
简单来说,pod删除了,emptyDir也随之删除
默认情况下,emptydir卷支持节点上的任何介质,可能是ssd,磁盘或网络存储,具体取决于自身的环境,可以将emptydir,medium字段设置为memory,让kubernetes使用tmpfs(内存支持的文件系统),虽然tmpfs非常快,但是tmpfs在节点重启时,数据同样会被清除,并且设置的大小会被计入到container的内存限制当中
1.3hostPath
hostpath卷可将节点上的文件或者目录挂载到pod上,用于pod自定义日志输出或访问docker内部的容器等
1.4 NFS
1.5 persistentVolumeClaim
1.6 Secret
1.7 SubPath
persistentVolume(简称pv)是由管理员设置的存储,它同样时集群中的一类资源,pv时容量插件,如volumes(卷),但其生命周期独立使用pv的任何pod,pv的创建可使用NFS,CEPH等
persistentVolumeClaim(简称pvc)是用户对存储的请求,类似于pod,pod消耗节点资源,pod可以请求特定级别的资源(cpu和内存),pvc可以请求特定的大小和访问模式,例如,可以以一次读写/写或只读多次的模式挂载。
虽然pvc允许用户使用抽象存储资源,但是用户肯呢个需要具有不同性质的pv来解决不同的问题,比如使用ssd硬盘来提高性能,所以集群管理员需要能够提供各种pv,而不仅是大小和访问模式,并且无须让用户了解这些卷的实现方式,对于这些需求可以使用stotageClass资源实现
目前pv的提供方式有两种:静态和动态
静态pv由管理员提前创建,动态pv 无需提前创建,只需指定pvc的storageClass即可
(1)回收策略
当用户使用完卷时,可以从api中删除pvc对象,从而允许回收资源,回收资源会告诉pv如何处理改卷,目前卷可以保留,回收或删除
pv,pvc pod连接
根据上述hostPath 的pv创建pvc创建pod
pvc
pod
以上是关于k8s volume的主要内容,如果未能解决你的问题,请参考以下文章