根据应用本身是否需要持久存储数据以及某一次请求跟此前的请求之间是否有关联性可以分为四类应用:
1、有状态有持久存储
2、有状态无存储
3、无状态无存储
4、无状态有持久存储
大多数跟数据存储服务相关的应用和有状态应用都是需要持久储存数据的
k8s存储卷的类型:
1、 只在节点本地使用emptyDir,一旦pod删这个存储卷也会删掉,作为临时目录
2、 hostPath指定宿主机上的目录作为储存卷
3、可使用网络连接来实现持久存储:
1、 SAN:iSCSI
NAS:nfs,cifs
2、 分布式存储:
glusterfs,rbd,cephfs
3、云存储:
EBS,Azure Disk
persistentVolumeClaim持久存储卷申请PVC
emptyDir实例
编辑emptydir-demo.yaml
gitRepo存储卷
宿主机将git上的仓库clone到本地,但是本地的不会同步到git,也可做一个辅助容器专门来做同步,
这种建立在empydir基础上
hostPath节点级的持久存储
在节点上手动创建目录
主机上执行kubectl apply -f pod-hostpath.yaml
当podready后用curl访问pod就可以看到其他挂载的数据,在删除pod待pod重建后可以看到被调度的其他节点上数据的变化
NS共享存储
将下面这台主机做成nfsserver
为nfsserver安装nfs-utils
创建共享目录
编辑文件将这个目录共享出去
启动nfs服务并查看监听的端口2049
尝试在node02上挂载
报错需要在node02以及node01上安装nfs-utils
再试
卸载
编辑nfs yaml
创建
在192.168.88.106上创建
访问
nfs支持多个pod挂载同一个目录
PVC
在106这台机器上创建多目录
编辑/etc/exports
在k8s上定义pv(集群级别不属于名称空间,一定不要定义名称空间)
定义PVC
创建
查看pv已被绑定