更新时间:2022-04-14 10:14:39
默认情况下容器中的磁盘文件是非持久化的,因此对于运行在容器中的应用来说面临两个问题,一是数据持久化:当容器挂掉kubelet将重启启动它时,文件将会丢失;二是数据共享:当容器组Pod中同时运行多个容器,容器之间需要共享文件时。Kubernetes的数据卷(Volume)解决了这两个问题。
网宿云容器服务采用的是Kubernetes的数据卷的概念,Kubernetes数据卷具有明确的生命周期管理,因此,数据卷的生命周期比Pod中运行的任何容器要持久,在容器重新启动时能可以保留数据。容器服务支持网宿云硬盘、NFS,容器组(Pod)可以使用任意数量的数据卷。更多详细的原理,请参考Kubernetes Persistent Volumes。
数据卷(Volume)使用原则
PV与PVC
Kubernetes抽象了PV(PersistentVolume)和PVC(PersistentVolumeClaim)来定义和使用存储,从而让使用者不用关心具体的基础设施,当需要存储资源的时候,只要像CPU和内存一样,声明要多少即可。
StorageClass
StorageClass描述了集群中的存储类型“分类”,在创建PVC/PV均需要指定StorageClass。目前容器服务默认提供wangsucloud-standard、wangsucloud-ssd、wangsucloud-nfs-small、wangsucloud-nfs-mid、wangsucloud-nfs-large 等StorageClass,在声明PVC时使用对应StorageClassName,就可以创建对应类型PV,并自动创建底层的存储资源。
执行如下命令即可查询爱捷云容器云提供的默认StorageClass,以1.20版本集群为例:
#kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
wangsucloud-nfs-large manila.csi.openstack.org Delete Immediate false 35d #文件存储StorageClass
wangsucloud-nfs-mid manila.csi.openstack.org Delete Immediate false 35d #文件存储StorageClass
wangsucloud-nfs-small manila.csi.openstack.org Delete Immediate false 35d #文件存储StorageClass
wangsucloud-ssd cinder.csi.openstack.org Delete Immediate true 35d #SSD云盘StorageClass
wangsucloud-standard cinder.csi.openstack.org Delete Immediate true 35d #性能型云盘StorageClass
使用限制: 边缘版集群和纳管集群不支持挂载数据卷。