我们可以在Pod中使用单个Volume装入多个容器吗?

时间:2018-12-21 16:19:00

标签: kubernetes kubernetes-pod kubernetes-container

在一个容器中,我们可以为两个不同的容器提供一个单一的容积。

2 个答案:

答案 0 :(得分:1)

如果您有两个容器,并且想要在它们之间共享数据,则可以执行以下操作:

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

现在,您的数据将不会发生冲突和共享

答案 1 :(得分:0)

是的。通常在两个容器之间共享卷主要是为了进行通信。请查看下图。

enter image description here

尝试这个article1 article2