本文详细介绍了 Kubernetes 中三种不同的持久化存储方式:emptyDir、hostPath 和 NFS。emptyDir 类型的卷在容器内部提供临时存储,数据不会跨 pod 保留;hostPath 将 pod 的卷直接映射到宿主机目录,实现 pod 与宿主机共享数据;NFS 则通过挂载远程 NFS 服务器的共享目录,使得多个 pod 能共享存储空间,适合需要跨节点共享数据的场景。
摘要由CSDN通过智能技术生成
emptyDir
#定义yaml文件,创建容器
[root@k8s-master-01 volumeTest]# cat podEmptyDir.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: www04
name: www04
spec:
volumes:
- name: v1 #定义的volume的名字
emptyDir: {} #随机定义宿主机中的挂载目录
containers:
- image: nginx
imagePullPolicy: IfNotPresent
name: www04
resources: {}
volumeMounts:
- name: v1 #与预先定义的volumes名字相同
mountPath: /data #容器中的挂载点
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
[root@k8s-master-01 volumeTest]# kubectl apply -f podEmptyDir.yaml
pod/www04 created
[root@k8s-master-01 volumeTest]# kubectl get pods
NAME READY STATUS RESTARTS AGE
www04 1/1 Running 0 32s
#在调度到的节点查看容器信息
[root@k8s-node-01 ~]# docker ps -a | grep www04
4181d673e28b 605c77e624dd "/docker-entrypoint.…" 3 minutes ago Up 3 minutes k8s_www04_www04_app01_bb2ba6e3-a88b-4f94-8700-310c57a453f4_0
c0d911e5b886 registry.aliyuncs.com/google_containers/pause:3.6 "/pause" 3 minutes ago Up 3 minutes k8s_POD_www04_app01_bb2ba6e3-a88b-4f94-8700-310c57a453f4_0
[root@k8s-node-01 ~]# docker inspect 4181d673e28b | grep data
"/var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1:/data",
"Destination": "/data",
[root@k8s-node-01 ~]# ls /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1
[root@k8s-node-01 ~]# cd /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1
[root@k8s-node-01 v1]# ls
[root@k8s-node-01 v1]#
#主节点进入容器并在/data目录创建文件,之后再查看node节点文件情况
[root@k8s-master-01 volumeTest]# kubectl exec -it www04 -- bash
root@www04:/# ls /data
root@www04:/# cd /data/
root@www04:/data# touch emptyDirTest.txt
root@www04:/data#
[root@k8s-node-01 v1]# ls
emptyDirTest.txt
#删除pod查看文件情况,emptyDir是以内存为介质的存储方式,故删除容器后文件也会消失。
[root@k8s-master-01 volumeTest]# kubectl delete pod www04
pod "www04" deleted
[root@k8s-node-01 v1]# cd /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1
-bash: cd: /var/lib/kubelet/pods/bb2ba6e3-a88b-4f94-8700-310c57a453f4/volumes/kubernetes.io~empty-dir/v1: 没有那个文件或目录