k8s集群中的存储持久化概述

存储分类:
直连式存储,集中式共享存储,分布式存储
文件存储,块存储,对象存储
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

猜你喜欢

转载自blog.51cto.com/dongdong/2431589