K8s的持久化存储学习

2023-11-7 / 0 评论 / 272 阅读
温馨提示:
本文最后更新于 2023-11-7,已超过半年没有更新,若内容或图片失效,请留言反馈。

为什么要做持久化存储?
因为在k8s中部署的应用都是以pod容器的形式运行的,假如部署MySQL、Redis等数据库也在pod里,需要对这些数据库产生的数据做备份。但是因为Pod是有生命周期的,如果Pod出现问题或者不小心被删除,往往会导致这些数据会随之消失,所以考虑到数据的安全以及长久的保留,就要考虑pod数据做持久化存储。
K8s支持哪些存储
K8s支持的存储对象是非常多的,我们可以通过命令查看: kubectl explain pods.epec.volumes|grep Object
K8s的持久化存储学习
可以看得出,只要是网络上存的基本要都支持,但是比较常用的也就以下几种:
1、emptyDir
2、hostPath
3、nfs
4、persistentVolumeClaim(PVC)
4、glusterfs
5、cephfs
6、configMap
7、secret
当然如果你有能力也可以自己开发新的存储方案。

如何在K8s使用存储卷
一般来说在K8s中想要使用存储卷,需要经历如下步骤
1)、定义pod的volume,这个volume指明它要关联到哪个存储上的
2)、在容器中要使用volumemounts挂载对应的存储

emptyDir
emptyDir类型的Volume是在Pod分配到Node上时被创建,Kubernetes会在Node上自动分配一个目录,因此无需指定宿主机Node上对应的目录文件。 这个目录的初始内容为空,当Pod从Node上移除时,emptyDir中的数据会被永久删除。emptyDir Volume主要用于某些应用程序无需永久保存的临时目录,多个容器的共享目录等。
hostPath
hostPath Volume是指Pod挂载宿主机上的目录或文件。 hostPath Volume使得容器可以使用宿主机的文件系统进行存储,hostpath(宿主机路径):节点级别的存储卷,在pod被删除,这个存储卷还是存在的,不会被删除,所以只要同一个pod被调度到同一个节点上来,在pod被删除重新被调度到这个节点之后,对应的数据依然是存在的。
hostpath存储卷缺点:单节点,pod删除之后重新创建必须调度到同一个node节点,数据才不会丢失。
NFS
NFS,中文名网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样,用得较多的一种存储类型。

Kubernetes 1.28 不包含 awsElasticBlockStore 卷类型
Kubernetes 1.28 不包含 azureDisk
Kubernetes v1.21 已弃用
Kubernetes 1.28 不包含 cinder 卷类型。
Kubernetes v1.17 已弃用gcePersistentDisk
gitRepo 卷类型已经被废弃
portworxVolume Kubernetes v1.25已弃用
Kubernetes v1.28 RBD CSI deprecated
vsphereVolume(已弃用)
flexVolume(已弃用)Kubernetes v1.23 [deprecated]

评论一下?

OωO
取消