K8S的常见volumes存储卷
volumes分类
- 。emptyDir:临时存储,在 pod 生命周期内存在。可以对pod内多个容器进行数据持久化。典型应用: web日志,日志采集
- hostPath:挂载主机文件系统中的目录或文件。pod调度到节点,就会占用对应节点的目录
- persistentVolumeClaim:用于绑定持久化存储
- nfs:挂载网络文件系统
- configMap:从 ConfigMap 中挂载配置数据
- secret:从 Secret 中挂载敏感信息
- downwardAPI:获取 pod 的元数据
emptydir
emptydir介绍
-
emptydir是一种 K8S的一种存储卷类型,通常用在一个 Pod 中的多个容器之间共享数据。EmptyDir 默认将数据存储在节点的本地磁盘上,使用的是节点的文件系统
-
EmptyDir 无法跨节点共享数据
-
当一个容器的日志需要采集时,就可以使用emptydir + 采集器实现数据共享
-
emptydir 存储卷的生命周期与 pod 一致,pod 终止时,存储卷会被释放,数据也随之被清除
-
也可以将数据存储在内存中,适合需要高速度的数据访问场景,但也有内存限制
-
volumeMounts: - name: shared-data mountPath: /data volumes: - name: shared-data emptyDir: medium: Memory
-
使用emptydir使容器实现数据共享
1.在一个pod内创建2个容器,创建一个emptydir 卷给2个容器使用。如意第二个容器不要用apps
[root@master23107-volumes]# cat 01-emptydir_TwoPod.yaml
apiVersion: v1
kind: Pod
metadata:
name: emptydir-pod
spec:
nodeName: worker233
volumes:
- name: zhiyong18-luckyboy
emptyDir: {}
containers:
- name: xixipod
image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
volumeMounts:
- name: zhiyong18-luckyboy
mountPath: /xixi_pod
- name: hahapod
image: registry.cn-heyuan.aliyuncs.com/wzyall/alpine:3.20.2
stdin: true
volumeMounts:
- name: zhiyong18-luckyboy
mountPath: /haha_pod
2.连接进入容器,在其中一个容器查看到xixi目录,并创建文件
/ # cd /haha_pod/
/haha_pod # touch 1.txt
/haha_pod #
3.在第二个容器查看到其他容器创建的文件
[root@master231~]# kubectl exec -it emptydir-pod -c xixipod -- sh
/ # ls /xixi_pod/
1.txt
/ #
4.在对应的宿主机可以发现这个目录
/var/lib/kubelet/pods/030a766e-9166-4deb-b780-6ad2fe5b34af/plugins/kubernetes.io~empty-dir
5.删除kubectl delete
pod yaml配置,一段时间后数据不存在
[root@worker232~]# find / -iname '*wenzhiyong666*'
[root@worker232~]#
hostpath
-
卷通过将宿主机文件系统上的路径挂载到 Pod 中,使得 Pod 内的容器可以访问该路径
-
可以实现在宿主节点和 Pod 之间共享数据
-
可以实现pod访问宿主机上特定的日志文件或数据目录
1.创建一个pod,然后在 pod调度到的节点创建目录:/hostpath-test
[root@master23107-volumes]# cat 02-hostpath.yaml
apiVersion: v1
kind: Pod
metadata:
name: hostpath-pod
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
volumeMounts:
- mountPath: /data
name: hostpath-volume
volumes:
- name: hostpath-volume
hostPath:
path: /hostpath-test
type: Directory
2.进入pod写入数据,然后删除pod。
/ # touch /data/hostpath-test.txt
3.查看worker233节点数据被保留了
[root@worker233~]# ls /hostpath-test/
hostpath-test.txt
挂载总结
pod的数据持久化
-
emptyDir:
应用场景:
。特点:
1.删除pod内指定的容器时,数据并不丢失。
2.当删除pod时,数据就丢失了,因此我们说emptyDir的生命周期随着pod。
3.可以实现同一个pod不同容器的数据共享。 -
hostPath
应用场景:
pod内的容器需要访问worker节点的指定目录。特点:
1.无论是删除pod还是容器,数据始终不丢失。
2.可以实现同一个节点不同pod的数据共享
原文地址:https://blog.csdn.net/qq_73797346/article/details/144361217
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!