提问者:小点点

Kubernetes 在没有持久性的情况下在 Pod 之间共享文件


有没有办法在没有持久性的情况下在 pod 之间共享文件?

对于持久性,我只需使用< code > read write many < code > access mode 并将其安装到某个位置:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: some-sc
  resources:
    requests:
      storage: 1Gi

我需要在没有PVC的情况下做这样的事情,或者使用使用存储类的PVC,它只是通过仅使用内存来模拟持久性。

我可以用一个不同的pod来解决这个问题,它通过使用K8s api来重新分发文件。< br >但是我觉得对于这样一个简单的任务来说,这有点让人不知所措。

编辑:使用< code>configmap是不可能的,因为该文件应该是可写的。


共1个答案

匿名用户

发布了社区维基,以便通过通用解决方案提高可见性,因为没有提供更多详细信息。随意扩展它。

正如@DavidMaze在评论中提到的:

我认为真的没有办法做到这一点(如果没有 PVC 声明,吊舱怎么知道要安装什么?如果它们位于不同的节点上,它们将如何共享内存?

在Kubernetes中,如果没有持久性,就不可能在pods之间共享文件。

如果您想在同一个pod中的容器之间共享存储,可以查看emptyDir卷。它可以使用内存(tmpfs)系统:

根据您的环境,emptyDir卷存储在支持节点的任何介质上,如磁盘、SSD或网络存储。但是,如果您将emptyDir.media字段设置为“Memory”,Kubernetes将为您安装tmpfs(RAM支持的文件系统)。虽然tmpfs非常快,但请注意,与磁盘不同,tmpfs在节点重新启动时被清除,您写入的任何文件都将计入容器的内存限制。

正如@DavidMaze在他的评论中提到的,如果你的应用能够通过HTTP传递内容,你可以使用消息队列:

您的应用程序是否可以通过HTTP传递内容,或者使用RabbitMQ之类的消息队列,而不是依赖文件系统?

检查RabbitMQ和Apache Kafaka。

另请查看本主题,其中包含有关在 Pod 之间共享存储(但具有持久性)的不同答案/解决方案。