k8s对象-挂载卷
支持类型
emptyDir
hostPath
gcePersistentDisk
awsElasticBlockStore
nfs
iscsi
glusterfs
rbd
gitRepo
secret
persistentVolumeClaim
以下介绍集中常用挂载类型:
1. emptyDir
1.1 概念
-
位置
pod所在的node节点。
实际位置在/var/lib/kubelet/pods/
下(2.1.3 中我们将验证这个操作) -
生命周期
该pod启动时创建
该pod被移除时删除
容器崩溃数据不丢失
1.2 示例
volumeMounts:
- name: server-logs
mountPath: /app/logs
volumes:
- name: server-logs
emptyDir: {}
1.3 实际位置
测试:我们按2.1.2 示例 创建一个挂载空目录的nginx容器,在容器中写一个 hellohello文件,到pod所在node节点上,查看该容器:
[root@DoN03 data]# docker ps |grep nginx
a1b2d342fe85 harbocto.boe.com.cn/public/nginx "/docker-entrypoint.…" 8 minutes ago Up 8 minutes k8s_nginxtest-02_nginxtest-02_test_9928f5c6-80fd-4310-b4f6-8b07ce61fbab_0
52b228668ff3 registry.aliyuncs.com/google_containers/pause:3.1 "/pause" 8 minutes ago Up 8 minutes k8s_POD_nginxtest-02_test_9928f5c6-80fd-4310-b4f6-8b07ce61fbab_0
查找该文件所在位置:
[root@DoN03 data]# find / -name hellohello
/var/lib/kubelet/pods/9928f5c6-80fd-4310-b4f6-8b07ce61fbab/volumes/kubernetes.io~empty-dir/server-logs/hellohello
2. hostPath
-
位置
pod所在的node节点的指定目录下 -
生命周期
该pod启动时创建
该pod被移除时不会删除 -
示例
app/logs
将被挂载在宿主机的/data/logs
目录
volumeMounts:
- name: server-logs
mountPath: /app/logs
volumes:
- name: server-logs
hostPath:
path: /data/logs
3. pvc+pv
3.1 作用
- pvc:和pod关联(由pod指定pvc名),关联到pod中要挂载的目录。
- pv:向存储申请空间并关联pvc,不受namespace限制。
3.2 组件间的关系
pod--------pvc------pv--------存储
- 一个pod可以挂载多个pvc
- 多个pod可挂载一个pvc
- pv和pvc一一对应
3.3 示例
- pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pv-map-logs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
- pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-map-logs #名字和pvc一致即可关联
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
path: /data/map/logs #挂载nfs服务器的路径
server: 10.10.xxx.xxx # 挂载nfs服务器的地址
persistentVolumeReclaimPolicy: Recycle #回收策略
说明:
1)回收策略:
Recycle
:删除pvc自动清除pv中的数据,pv的状态变为Available,可重新被挂载。Retain
:删除pvc后,pv变为Released状态,不可再使用。Delete
:删除pvc后,自动删除pv。
- deployment 使用
volumeMounts:
- name: map-logs
mountPath: /app/logs
volumes:
- name: map-logs
persistentVolumeClaim:
claimName: pv-map-logs
4. 动态存储
storageclass 为PVC自动创建PV。