存储分类:
直连式存储,集中式共享存储,分布式存储
文件存储,块存储,对象存储
DAS,NAS,SAN
DAS属于直连式存储,将存储设备通过SCSI接口或者光纤通道直接和主板连接,不能实现数据共享
NAS和SAN属于集中式共享存储
NAS使用NFS和CIFS(原来叫SMB,微软的)协议
SAN分为FC SAN和IP SAN
IP SAN使用iSCSI技术
NFS实现linux之间共享,smaba基于CIFS协议,实现linux和windows之间文件共享
ceph属于分布式共享系统
k8s集群中支持的持久存储主要包括:
1、node节点存储
又分为:随机卷emptyDir和固定卷hostPath
2、集中式存储nfs
3、分布式存储ceph
4、特殊卷configmap和secret
创建pod时,字段volumes支持的存储类型主要包括:
$ kubectl explain Pod.spec.volumes
cephfs
cinder
configMap
emptyDir
glusterfs
hostPath
iscsi
nfs
persistentVolumeClaim
rbd
secret
创建pod或控制器时,可以直接使用某个后端存储(如NFS)作为其volumes
也可以使用pvc作为其后端volumes,pvc和上面的nfs等是平级关系
使用pvc作为其后端volumes时,访问顺序是pvc---pv---后端存储
创建使用随机卷emptyDir的pod
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: podxx
spec:
volumes:
- name: vol1
emptyDir: {} #使用节点目录,并且随机
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /xx #在容器内部挂载的目录
name: vol1
- image: busybox
name: busybox
command: ['sh','-c','sleep 5000']
volumeMounts:
- mountPath: /yy
name: vol1
创建使用固定卷的pod
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: podxx
spec:
volumes:
- name: vol1
hostPath:
path: /aa #自动在pod所在的节点上创建
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /xx
name: vol1
- image: busybox
name: busybox
command: ['sh','-c','sleep 5000']
volumeMounts:
- mountPath: /yy