Kubernetes 理解笔记之容器持久化存储以及CSI机制


本文详细整理了自己对PV和PVC存储体系、CSI 自定义存储插件等容器持久化存储方面的设计思想和知识理解,是在学习张磊老师Kubernetes课程中持久化存储过程中的学习笔记。
【Kevin亓】



一、Kubernetes 本身的持久化存储体系

1.1 容器的“持久化存储”是什么?

容器的存储依赖容器 Volume 的挂载机制,将一个宿主机上的目录,跟一个容器里的目录绑定挂载在了一起。

那持久化存储就是“持久化 Volume”,指的就是这个宿主机上的目录,具备“持久性”。即:这个目录里面的内容,既不会因为容器的删除而被清理掉,也不会跟当前的宿主机绑定,即可以被“迁移”到其他节点上。这样,当容器被重启或者在其他节点上重建出来之后,它仍然能够通过挂载这个 Volume,访问到这些内容。大多数情况下,持久化 Volume 的实现,往往依赖于一个远程存储服务,比如:远程文件存储(比如,NFS、GlusterFS)、远程块存储(比如,公有云提供的远程磁盘)等等。

所以,Kubernetes 需要做的持久化工作,就是为容器准备一个宿主机目录,将其绑定挂载一个持久化的远程服务,使容器在这个目录里写入的文件,都会保存在远程存储中,从而使得这个目录具备了“持久性”。

1.2 在 Kubernetes 中容器如何实现持久化存储?

核心:依赖 Persistent Volume(PV)和 Persistent Volume Claim(PVC)这套持久化存储体系
PV和PVC体系注:这里的 PV 是一个 API 对象,下面会对应 Volume 处理流程,得到一个持久化目录

容器实现持久化存储的过程:

(PV 和 PVC 的使用过程大体就是:运维人员维护一组 PV 对象,用户使用时只需要定义 PVC 声明想要的 Volume 属性,然后创建 Pod 时声明使用这个 PVC 就可以了。Kubernetes 会针对这些 API 对象进行一系列的控制循环工作,由 Kubernetes 中专门处理持久化存储的控制器来实现,比如 PV 和 PVC 的绑定、将 PV 对象转化为真正的持久化存储。)

1、事先创建 PV 对象

-创建方式:

(1)Static Provisioning(人工管理 PV 的方式),就是简单的编写提交 PersistentVolume 这个 API 对象。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.244.1.4
    path: "/"

(2)Dynamic Provisioning(自动创建 PV 的机制),会在一个 PVC 被创建时,自动创建对应 PV。原理是通过 StorageClass 这个 API 对象的描述来实现,StorageClass 其实就是创建 PV 的模板,包含 PV 的属性和创建这种 PV 需要用到的 Provisioner(存储插件)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值