首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes Pod将第一个容器的内容装入第二个容器

Kubernetes Pod将第一个容器的内容装入第二个容器
EN

Stack Overflow用户
提问于 2022-10-26 20:56:08
回答 3查看 38关注 0票数 0

我一直在搜索,每个答案似乎都是同一个例子(https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/)。在一个容器中,您可以创建一个空卷,然后将其挂载到两个容器中,并在每个容器上看到在该挂载中写入的任何内容。虽然这很好,但我的用例略有不同。

集装箱A/opt/内容

集装箱B /data

容器A安装了大约4G的数据。我想做的是在/content将/opt/content装载到Container中。这样,容器B在运行时就可以访问数据的4G,并且我不必复制内容或专门构建容器B。

我的问题,这有可能。如果是的话,正确的pod语法是什么?

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: two-containers
spec:

  restartPolicy: Never

  volumes:
  - name: shared-data
    emptyDir: {}

  containers:

  - name: nginx-container
    image: nginx
    volumeMounts:
    - name: shared-data
      mountPath: /opt/content

  - name: debian-container
    image: debian
    volumeMounts:
    - name: shared-data
      mountPath: /content
EN

回答 3

Stack Overflow用户

发布于 2022-10-27 10:37:37

您的问题中的代码示例应该有效。两者都使用相同的卷,您可以将它们安装在容器中的不同位置。nginx容器将具有/opt/content中的共享数据内容,debian容器将在/content中具有共享数据内容。使用mountPath,可以指定将卷安装在容器中的位置。

票数 0
EN

Stack Overflow用户

发布于 2022-10-27 19:16:17

从我的研究和测试中,我能知道最好的是在一个POD,两个容器不能看到对方的文件系统。卷挂载将允许每个容器在吊舱中创建一个挂载到指定的路径(如示例所示),然后在这两个位置上都会看到写入到它的任何项目。这对原木和其他东西很有用。

在我的上下文中,这证明这是不可能的,并且创建这个挂载,然后让Container将4G目录复制到新创建的挂载中是很费时的。

我只能告诉您,这样做的唯一方法是创建持久卷或其他类似的内容,并在Container中挂载它。通过这种方式,Container内容存储在持久卷中,并且可以在需要时轻松地挂载。唯一的问题是,必须在每个定义的Kube集群中设置持久卷,这就是痛点。

如果其中任何一个是错误的,我只是没有找到正确的文件,请纠正我。我很乐意这样做。

票数 0
EN

Stack Overflow用户

发布于 2022-10-27 20:21:57

当容器启动时,首先安装容器映像(或者更精确地说,是图像的层)。之后,您的自定义卷将被挂载,将任何数据隐藏在挂载路径及其下面的图像中。因此,在几个容器之间共享图像中的数据而不复制它们是不可能的。

典型的解决方案是并将继续使用init容器,该容器下载或将实际数据复制到一个短暂的卷中,然后由一个或多个其他容器(https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-initialization/#create-a-pod-that-has-an-init-container)共享。

代码语言:javascript
复制
initContainers:
- name: init
  image: <image-containing-the-data-based-on-some-basic-image>
  command: ["sh", "-c", "cp -ar /opt/content/* /mnt/target/"]
  volumeMounts:
  - name: shared-data
    mountPath: /mnt/target

您实际上需要的是一种容器存储接口(CSI)驱动程序,它支持从容器映像创建卷。我发现了两个完全可以做到这一点的项目,但没有一个项目表示准备投入生产。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74214125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档