认识
某些时候,我们需要两个容器能够交换数据(简单交换)。例如,如果 Pod 上运行了两个或多个容器,如果要交换数据,可以使用 emptyDir 类型的本地数据卷。
组成
原理简述(概述 emptyDir 实现)
Kubernetes emptyDir is not the same as Docker’s volumes-from
在 Docker 中,通过 –volumes –volumes-from 选项,能够在容器间实现数据的共享。两个容器都能够向同个 Volume 写入数据,以此来实现数据共享。
在 Kubernetes 中,通过 emptyDir 类型的存储,来实现两个容器之间的数据共享。但 emptyDir 与 –volumes-from 的实现方式并不相同,Kubernetes 创建空目录(如其名),并将其挂载到容器中。
性质
数据的创建与销毁
Alibaba Cloud Community/Kubernetes Volume Basics: emptyDir and PersistentVolume
当 Pod 创建时,emptyDir 得以创建;
当 Pod 销毁时,emptyDir 数据将被删除;
当 Pod 重启时,例如 CrashLoopBackOff 等等,emptyDir 的数据将被保留,而不会被删除;
应用
容器交换数据 Exchanging Data Between CTR
当某个容器向 emptyDir 中写入数据后,另个容器能够查看到这些数据。
以下的两个容器挂载了同一个本地卷,当创建容器后,可以登陆到容器中查看挂载点信息及数据。
kind: Pod
apiVersion: v1
metadata:
name: sahrevol
spec:
containers:
- name: c1
image: centos:7
command: ["sleep", "infinity"]
volumeMount:
- name: xchange
mountPath: /tmp/xchange
- name: c2
image: centos:7
command: ["sleep", "infinity"]
volumeMount:
- name: xchange
mountPath: /tmp/data
volumns:
- name: xchange
emptyDir: {}
改进
如果节点关闭,或者节点进行维护,那本地数据会丢失。所以,大多数时候,我们还是使用网络卷;