K8s卷存储详解(一)

K8s 存储

什么是卷?为什么要用卷?

我们知道K8s是基于容器,对各个Pod进行管理的。Pod是由容器构成的,我也知道,容器(如Docker)有个特点就是,容器删除后,在容器中产生的数据也会随之销毁。K8s会监控容器的运行状态,当有容器崩溃或停止时,K8s的Controller会删除这些容器,并重新创建新的容器。如果容器被销毁,此时容器状态未保存, 因此在容器生命周期内创建或修改的所有文件都将丢失。在崩溃期间,kubelet 会以干净的状态重新启动容器。

另外一个需求就是:当多个容器在一个 Pod 中运行并且需要共享文件时, 就需要跨所有容器设置和访问共享文件系统。

K8s卷分类

根据应用场景不同,和需求不同,将卷分为不同的种类

  • 临时卷

  • 持久卷

  • 投射卷

卷的相关参数

  • 卷类型

  • 卷挂载位置

卷挂载位置

卷挂载在镜像中的指定路径下。 Pod 配置中的每个容器必须独立指定各个卷的挂载位置。

注意:卷不能挂载到其他卷之上(不过存在一种使用 subPath 的相关机制),也不能与其他卷有硬链接。

K8s目前支持的卷类型

已启用的卷类型

  1. awsElasticBlockStore (已弃用)
  2. azureDisk (已弃用)
  3. cinder (已弃用)
  4. gcePersistentDisk(已弃用)
  5. gcePersistentDisk(已弃用)
  6. gitRepo (已弃用)
  7. glusterfs(已移除)
  8. portworxVolume(已弃用)
  9. vsphereVolume(已弃用)
  10. flexVolume(已弃用)

可以使用的卷类型

  1. cephfs
  2. configMap
  3. downwardAPI
  4. emptyDir
  5. fc (光纤通道)
  6. hostPath
  7. iscsi
  8. local
  9. nfs
  10. persistentVolumeClaim
  11. subPath
  12. 树外(Out-of-Tree)卷插件

常用的数据卷(Volume)有:

  • 本地:如,HostPath、EmptyDir;
  • 网络:如,NFS、Ceph、GlusterFS;
  • 公有云:如,AWS EBS;
  • K8s资源:如,Configmap、Secret。

临时卷

什么是临时卷?

临时卷的生命周期与 Pod 的生命周期相同,与 Pod 一起创建和删除,当 Pod 不再存在时,Kubernetes 也会销毁临时卷。 所以停止和重新启动 Pod 时,不会受持久卷在何处可用的限制。

应用场景1:有些应用程序需要额外的存储,但并不关心数据在重启后是否仍然可用。

示例:缓存服务经常受限于内存大小,而且可以将不常用的数据转移到比内存慢的存储中,对总体性能的影响并不大。

应用场景2:些应用程序需要以文件形式注入的只读数据

示例:比如配置数据或密钥。

临时卷类型

根据不同的用途,支持几种不同类型的临时卷

emptyDirconfigMapdownwardAPIsecret 是作为 本地临时存储 提供的。它们由各个节点上的 kubelet 管理。

"本地"意味着存储介质不能是网络上的。

image-20230725190542754

EmptyDir

EmptyDir是在当 Pod 分派到某个Node节点上时创建的,它的初始内容为空,k8s自动分配一个目录,而无需指定宿主机上对应的目录文件。当Pod销毁时, EmptyDir中的数据也会被永久删除。

无论Pod 中的容器挂载 emptyDir 卷的路径是否相同,这些容器都可以读写 emptyDir 卷中相同的文件。

说明:容器崩溃并会导致 Pod 被从节点上移除,因此容器崩溃期间 emptyDir 卷中的数据是安全的

emptyDir 的一些用途:

  • 缓存空间,例如基于磁盘的归并排序。
  • 为耗时较长的计算任务提供检查点,以便任务能方便地从崩溃前状态恢复执行。
  • 在 Web 服务器容器服务数据时,保存内容管理器容器获取的文件。

设置卷挂载位置:

使用emptyDir.medium 字段用来控制 emptyDir 卷的存储位置。

挂载位置可以是基于存储介质的,也可以是基于内存的:

emptyDir 卷存储在该节点所使用的介质上; 此处的介质可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值