在Kubernetes(K8s)中,Volume是一种用于持久化存储数据的抽象概念。它允许容器在其生命周期内访问持久化存储,并提供了一种在Pod之间共享数据的方式。
EmptyDir:在Pod的生命周期内存在的空目录。适用于临时存储需求,但不具备数据持久性。HostPath:使用宿主节点上的文件系统路径作为Volume。适用于需要对主机文件系统直接进行读写操作的场景。PersistentVolume(PV)和PersistentVolumeClaim(PVC): 允许在Pod之间共享和持久化存储。PV表示集群中的实际存储资源,而PVC是对PV的请求,Pod通过PVC来请求PV的存储。ConfigMap和Secret: 用于将配置文件和敏感信息(如API密钥)作为Volume挂载到Pod中。
apiVersion: v1
kind: Pod
metadata:
name: volume-empty-dir
spec:
containers:
- name: volume-empty-dir1
image: nginx:1.14.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: myvolume
mountPath: /emptyDir
volumes:
- name: myvolume
emptyDir: {}
进入到容器之后,会看到这个目录
apiVersion: v1
kind: Pod
metadata:
name: volume-host-path
spec:
containers:
- name: volume-host-path
image: nginx:1.14.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: myvolume
mountPath: /hostPath
volumes:
- name: myvolume
hostPath:
path: /data/k8s/volume
type: DirectoryOrCreate
创建之后,查看pod运行在哪个节点
kubectl get pod -owide
运行在node2,所以直接去node2中看下目录是否被创建
目录存在,现在验证在容器内容创建文件是否会显示在node2中
进入到pod中,在/hostPath下面创建文件夹
kubectl exec -it volume-host-path -- /bin/sh
cd /hostPath
mkdir test
exit