存儲分類:
直連式存儲,集中式共享存儲,分佈式存儲
文件存儲,塊存儲,對象存儲
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