• 最近在学习张磊老师的 深入剖析Kubernetes 系列课程,最近学到了 Kubernetes 容器持久化存储部分
  • 现对这一部分的相关学习和体会做一下整理,内容参考 深入剖析Kubernetes 原文,仅作为自己后续回顾方便
  • 希望详细了解的同学可以移步至原文支持一下原作者
  • 参考原文:深入剖析Kubernetes

1. PV、PVC、StorageClass 关系梳理

1.1 相关概念

  • Volume:其实就是将一个宿主机上的目录,跟一个容器里的目录绑定挂载在了一起
  • 持久化 Volume:指的就是这个宿主机上的目录,具备“持久性”
    • 即:这个目录里面的内容,既不会因为容器的删除而被清理掉,也不会跟当前的宿主机绑定
    • 这样,当容器被重启或者在其他节点上重建出来之后,它仍然能够通过挂载这个 Volume,访问到这些内容
    • 大多数情况下,持久化 Volume 的实现,往往依赖于一个远程存储服务,比如:远程文件存储(比如,NFS、GlusterFS)、远程块存储(比如,公有云提供的远程磁盘)等等
    • 而 Kubernetes 需要做的工作,就是使用这些存储服务,来为容器准备一个持久化的宿主机目录,以供将来进行绑定挂载时使用
    • 而所谓“持久化”,指的是容器在这个目录里写入的文件,都会保存在远程存储中,从而使得这个目录具备了“持久性”
  • PV:表示是持久化存储数据卷对象。这个 API 对象定义了一个持久化存储在宿主机上的目录(如 NFS 的挂载目录)
    • 通常情况下,PV 对象由运维人员事先创建在 Kubernetes 集群里,比如:
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 10.244.1.4
    path: "/"
View Code

相关文章: