【问题标题】:What is the best way to mount files generated by one pod on another pod (before it starts) on a different node in GCP?在 GCP 的不同节点上挂载一个 pod 生成的文件到另一个 pod 上(在它启动之前)的最佳方法是什么?
【发布时间】:2020-01-26 05:40:43
【问题描述】:

我有一个简单的用例。我正在尝试在 Kubernetes 的两个不同节点上部署两个 pod。 Pod A 是一个服务器,它在收到 API 请求后创建一个文件 abc.txt。我想将这个abc.txt 文件挂载到Pod B 上。

如果文件jhsdiak.conf(该文件的名称是随机生成的)在启动之前在pod B 上不存在,pod B 将创建自己的默认文件。因此,为避免这种情况,文件必须在启动前挂载到Pod B

这是我尝试过的事情

  • 使用动态配置 PVC 的共享卷 -> 如果两个 pod 都创建在同一个节点上,这种方法可以正常工作。否则,因为 GCP 不支持 ReadWriteMany。
  • 使用 Kubectl CP 将文件从 Pod A 复制到主机路径,然后创建 configmaps/secrets 将其挂载到 Pod B -> 此方法失败,因为文件 jhsdiak.conf 的名称是随机生成的。
  • InitContainers -> 我不确定如何使用 init 容器将文件从一个 pod 移动到另一个。
  • 使用 NFS 持久存储 -> 我还没有尝试过,但在 pod 之间移动一个文件似乎需要很多开销。

有没有更好或更有效的方法来解决这个问题?

【问题讨论】:

  • 好像 NFS/Cloud Filestore 是 the way to go
  • 文件大小是多少?你每天有多少?
  • @guillaumeblaquiere 文件是根证书。非常分钟。我总共只有十个文件。不是每天一次,但一开始只有一次。
  • @char 我确实考虑过 NFS/Cloud Filestore,但似乎开销很大。我可以选择该选项,但我只需要确认这是正确的选择。
  • 无论你做什么,都不要使用 NFS,开销太可怕了。您可以使用 storageClass,但您必须实现自己的访问控制机制,否则您可能会得到两个随机文件而不是一个

标签: kubernetes google-cloud-platform volumes


【解决方案1】:

类似的解决方案是使用云存储来存储您的文件。

但是,除了“文件”之外,我还有另一个解决方案。创建一个 PubSub 主题并使用 Pod A 将您的文件推送到其中。 创建一个请求订阅并使用Pod B 进行轮询。

你可以实现你想要的,我的意思是从A向B发送数据,你不必担心文件系统。

如果您的集群与 Knative 兼容,事件解决方案可以帮助您留在集群内(如果需要)

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2019-04-08
    • 2019-02-08
    • 2020-02-20
    • 2021-12-22
    • 1970-01-01
    • 2019-10-27
    • 2019-04-24
    • 2022-01-25
    相关资源
    最近更新 更多