Kubernetes:Pod 之间的内存共享缓存

问题描述 投票:0回答:1

我正在寻找在同一节点上的 Pod 之间共享只读内存缓存的任何现有实现。此设置将允许快速访问,而无需将整个缓存加载到每个 Pod 内存中。

示例:1GB 查找字典保持最新,每个 Pod 都具有对数据的读取访问权限,允许快速查找,而无需有效地将数据克隆到内存中。所以最终结果只是节点上使用了 1GB 内存,而不是 1GB * N(pod 数量)

想象的k8s解决方案:

  1. 具有 tmpfs 卷 RW 的单个(守护进程)pod,维护最新的缓存数据
  2. 具有相同 tmpfs 卷 R 的多个 pod(仅限),映射数据文件以读取数据
    1. 自然地读出值并对其进行操作预计会产生传递内存使用

备注:

  • 我找到了有关 Pod 之间卷共享的多个条目,但没有上述完整的解决方案参考
  • tmpfs 非常适合 R/W 缓存速度,但显然它可以超过常规 fs
  • 寻找特定于语言或不可知的解决方案以供参考
    • 特定语言将利用特定语言将文件数据映射为字典/其他 KV 查找
    • 与语言无关且更通用的解决方案可以利用 sqlite,其中我们案例中的进程是 pods
kubernetes caching tmpfs
1个回答
1
投票

您可以使用安装在 hostIPC

 上的 
hostPath
 和/或 
tmpfs
,但这会带来一系列问题:

  1. hostPath
    本身会带来安全风险,使用时应将范围限定为所需的文件或目录,并以只读方式安装。它还附带一个警告,即不知道谁会被“指控” 对于内存,因此必须配置每个 Pod 才能 吸收它,取决于它是如何写的。它还可能“泄漏”至 根命名空间,不向任何人收费,但显示为“开销”
  2. hostIPC
    Pod 安全策略的一部分 ,自 1.21 起已弃用,并将在将来删除

一般来说,最好的想法是使用Redis,它是此类场景中最常用的工具之一。

© www.soinside.com 2019 - 2024. All rights reserved.