kubernetes - 我们可以在 Pod 中为多个容器使用单个卷挂载吗?

标签 kubernetes kubernetes-pod kubernetes-container

在一个 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/

相关文章:

ssl - 使用 cert-manager istio ingress 和 LetsEncrypt 在 kubernetes 中配置 SSL 证书

kubernetes - 如何将二进制文件注入(inject) v1.7 pod

kubernetes - 从同一集群上的CronJob拒绝连接到Kubernetes Pod

kubernetes - 如何让redis数据库pod在kubernetes中保持运行

kubernetes - 容器 Kubernetes 中的命令限制

java - 使用 Java Kubernetes 客户端 API 部署 Pod 并为其分配节点

mysql - 在 Kubernetes POD 中执行 MySQL 命令

linux - kubernetes:Docker请求和分配的内容之间的区别

kubernetes - 我们可以在 Kubernetes 的一个 Pod 中拥有相同类型的多个容器吗?

kubernetes - 在 Digitalocean 单节点集群上通过 helm 安装时的 Traefik 仪表板/Web UI 404