当前位置: 首页 > 面试题库 >

如何在Kubernetes Pod之间共享存储?

佴涵蓄
2023-03-14
问题内容

我正在评估Kubernetes作为我们新应用程序的平台。现在,一切看起来都非常令人兴奋!但是,我遇到了一个问题:我将群集托管在GCE上,并且需要某种机制在两个Pod之间共享存储(连续集成服务器和应用程序服务器)。用kubernetes做到这一点的最佳方法是什么?这些卷类型似乎都不符合我的需求,因为如果一个Pod需要写入GCE磁盘,则无法共享。NFS是完美的,但似乎需要为kubernetes集群使用特殊的构建选项?

编辑:共享存储似乎是我现在使用Kubernetes多次遇到的问题。在多个用例中,我只想拥有一个卷并将其连接到多个Pod(具有写访问权限)。我只能假设这将是一个常见的用例,不是吗?

EDIT2:例如,此页面描述了如何设置Elasticsearch集群,但是无法将其与持久性存储进行连接(如此处所述),这会使它变得毫无意义:(


问题答案:

回答这个问题有点晚了,但是根据我到目前为止对Kubernetes /
MSA的经验,这里的问题更多是在您的设计模式中。MSA中经常出现的基本设计模式之一是对服务的正确封装,其中还包括其数据。

您的服务应照顾与其关注领域相关的数据,并且与OOP一样,应允许通过接口(API,PUBSUB消息等)将该数据访问到其他服务。对数据的多服务访问类似于OOP中的全局变量。

我认为Google也有同样的看法,这就是Kubernetes以此方式建立的原因。

例如,如果您要写日志,则应该有一个日志服务,每个服务都可以调用该服务并记录需要记录的相关数据。直接写入共享磁盘意味着,如果您更改日志目录结构等,或决定添加其他功能(如关于错误的电子邮件),则需要更新每个容器。



 类似资料:
  • 我们正在使用.NET的StackExchange Redis客户端。 PS:我们尝试使用廉价的250GB(共享基础设施),但性能非常慢。读操作在600-800ms之间是一致的。不加载(对于一个~300KB的对象)。升级到专用的1GB服务将其更改为30-40毫秒。在这里查看更多:带有Azure Redis的StackExchange.Redis速度慢或引发超时错误

  • 问题内容: 我在JVM(Scala)中构建了一个庞大的图形,我想反复使用它来调整算法。我不想每次都从磁盘重新加载它。有没有办法让它坐在一个JVM中,而又与另一个正在开发算法的JVM连接呢? 问题答案: 将图形保存到磁盘,然后使用MappedByteBuffer将其映射到内存。两个进程应使用相同的内存,该内存将与页面缓存共享。

  • 我正在评估Kubernetes作为我们新应用程序的平台。现在看来,这一切都非常令人兴奋!但是,我遇到了一个问题:我在GCE上托管集群,需要某种机制在两个POD(持续集成服务器和应用服务器)之间共享存储。对库伯内特斯来说,最好的方法是什么?所有的卷类型似乎都不适合我的需要,因为如果一个pod需要写入磁盘,GCE磁盘就不能共享。NFS将是完美的,但似乎需要kubernetes集群的特殊构建选项? 编辑

  • 当我试图打开我的Apache POI excel文件时,我遇到了一些问题,该文件包含大量数据(600.000/700000行),为三个不同的表中生成的三个枢轴提供数据(使用流式SXSSFWorkbook)。 当我试图打开创建的Excel di MSExcel时,出现了这样的消息:“Excel无法用可用的Excel资源完成此活动...试着关闭一些东西……”。所以,为了节省资源,我尝试在前两个pivo

  • 问题内容: 我是Go菜鸟,无法找到在Go中打开mysql连接然后在http处理程序之间共享它的完整示例。到目前为止,这是我的代码,如何使用在HomeHandler中的main()中打开的db连接? 问题答案: 数据库/ sql程序包会自动为您管理连接池。 返回 代表连接池 而不是单个连接的句柄。如果池中的所有连接都忙,则数据库/ sql软件包会自动打开一个新连接。 将其应用于代码意味着,您只需要共

  • 问题内容: 创建一个Today小部件,我用来保留一些数据。在主应用程序中,我正在使用。这不能由扩展读取(或可以?),这就是为什么我使用构造函数。 用户在主应用程序中持久存储的数据需要在扩展程序中可用。 目前,我坚持两者,以便可以共享这些值 问题是我应该将它们放在一起并仅在我的应用程序中使用,还是这种不好的做法? 编辑:我正在使用一个应用程序组容器。为了澄清起见,我问我是否应该在整个项目中用suit