volume数据卷管理
一、volume介绍
用于实现数据的持久化存储
Kubernetes支持多种类型的卷,例如EmptyDir、HostPath、nfs、glusterfs、ceph等
二、emptyDir
创建Pod时,Pod运行的node节点会创建临时卷,并将卷挂载到Pod指定的目录中
临时卷存放目录
/var/lib/kubelet/pods//volumes/kubernetes.io~empty-dir/卷名称
Pod宕机销毁后,该临时卷中的数据会随之被删除
bash
apiVersion: apps/v1
kind: Deployment
metadata:
name: test1-deploy
spec:
replicas: 2
selector:
matchLabels:
app: test1-pod
template:
metadata:
labels:
app: test1-pod
spec:
containers:
- name: test1-pod
image: busybox
imagePullPolicy: IfNotPresent
command:
- sleep
- "3600"
volumeMounts:
- name: test1-volume
mountPath: /test1
volumes:
- name: test1-volume
emptyDir: {}
三、hostPath
创建Pod时,Pod运行的node节点会在本地创建目录,并该目录挂载到Pod中
Pod宕机后,宿主机对应目录中的文件不会消失
bash
apiVersion: apps/v1
kind: Deployment
metadata:
name: test2-deploy
labels:
app: test2-deploy
spec:
replicas: 2
selector:
matchLabels:
app: test2-pod
template:
metadata:
labels:
app: test2-pod
spec:
containers:
- name: test2-pod
image: busybox
imagePullPolicy: IfNotPresent
command:
- sleep
- "3600"
volumeMounts:
- name: test2-volume
mountPath: /test1
volumes:
- name: test2-volume
hostPath:
path: /data
四、基于nfs的网络卷
bash
apiVersion: apps/v1
kind: Deployment
metadata:
name: test3-deploy
labels:
app: test3-deploy
spec:
replicas: 2
selector:
matchLabels:
app: test3-pod
template:
metadata:
labels:
app: test3-pod
spec:
containers:
- name: test3-pod
image: busybox
imagePullPolicy: IfNotPresent
command:
- sleep
- "3600"
volumeMounts:
- name: test3-volume
mountPath: /test1
volumes:
- name: test3-volume
nfs:
server: "192.168.140.11"
path: "/data"
五、PV与PVC 持久卷
1、PV、PVC介绍
PV PersistentVolume
后端真实存储空间的映射
PVC PersistentVolumeClain
使用存储空间的申请
使用流程
创建PV标识真实的存储空间
创建PVC发送申请存储空间的请求,K8S集群会自动在PV、PVC间建立映射关系
建立映射关系:
依靠存储空间的大小
依靠PV的访问模式
创建POD时绑定PVC,实现持久化
bash
1、创建PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-data1
spec:
capacity:
storage: 2G
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Recycle
nfs:
server: 192.168.140.13
path: /data1