在一个 Pod 中,我们可以为两个不同的容器使用一个卷。
最佳答案
如果你有两个容器并且你想在它们之间共享数据,你可以这样做:
apiVersion: v1
kind: Pod
metadata:
name: production
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: storage
mountPath: /vol/data
- name: container2
image: image2
volumeMounts:
- name: storage
mountPath: /store/data
volumes:
- name: storage
emptyDir: {}
这里,
emptyDir
用于在两个容器之间共享数据。两个容器都有容量。
因此,如果您想共享相同的数据,您可以在两个容器中安装相同的卷。
但是,如果您想使用单个卷,并且不想在两个容器之间共享数据,则可以使用 subPath
spec:
containers:
- name: container1
image: image1
volumeMounts:
- name: storage
mountPath: /vol/data
subPath: vol
- name: container2
image: image2
volumeMounts:
- name: storage
mountPath: /store/data
subPath: store
volumes:
- name: storage
emptyDir: {}
这里,
subPath
指定引用卷内的子路径而不是其根路径。这意味着,卷中的两个单独的目录将安装在两个容器中。
在此示例中,/vol
目录将安装在 container1
容器中,卷中的 /store
将安装在 container2 中
现在,您的数据不会发生冲突并共享
关于kubernetes - 我们可以在 Pod 中为多个容器使用单个卷挂载吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53887893/