我正在将一个HPC应用程序迁移到Kubernetes,并试图确定提供只读数据资产作为配置托管快照的最佳方法。
以前,我的团队已经将我们的应用程序作为一组RPM交付了,但是当我们转移到Kubernetes时,我们正在交付Docker映像。这对于我们的应用程序二进制很好,因为我们可以提供一个已知的工作映像,而不是一堆所有必须同意的RPM。
然而,问题在于我们的只读数据资产(类似于游戏的资产文件)。几个不同的Docker映像可能依赖于一组数据资产,因此我们不希望将它们烘焙成实际的Docker映像本身(另外,我们希望能够在不必重新编译应用程序映像的情况下更改资产)。
我们不确定这方面的最佳方法。第一个想法是创建一个只运行NFS并提供数据的“数据容器”。这成功地将数据从应用程序中分离出来,并允许我们将一组数据RPM折叠成一个标记的停靠映像,但在我看来,这似乎有点过火了。
我知道我们实际上是在为Kubernetes寻找一个持久的卷,但问题是将所有的数据打包到一个包中,这个包具有与Docker映像相同的交付方便性。
Is还有一种更好的方法来提供这些只读数据作为版本控制的快照?
发布于 2020-05-01 19:35:19
我们不希望将它们烘焙成实际的Docker映像本身(另外,我们希望能够在不需要重新编译应用程序映像的情况下更改资产)。
这的确是一个很好的特性。你走在正确的轨道上。
然而,问题在于我们的只读数据资产(类似于游戏的资产文件)。
这个问题可以通过多种解决方案来解决,很难说什么是对你最好的。以下是一些替代方案。
Persistent卷- ReadOnlyMany
我知道我们实际上是在为Kubernetes寻找一个持久的卷,但问题是将所有的数据打包到一个包中,这个包具有与Docker映像相同的交付方便性。
accessModes:
- ReadWriteOnce
- ReadOnlyMany然后(通过一个自动的过程)
ReadOnlyMany将卷加载到您的荚/服务并且保持卷不可变,在需要更改内容时创建一个新的卷。您也可以这样使用多个卷。
CDN
我们的只读数据资产(类似于游戏的资产文件)。
这在本质上也听起来像内容传送网络通常提供的服务。但这取决于您的用例是否是一个好的解决方案。
桶
例如,CDN的数据通常由云提供商的“存储桶”存储,这也是一种选择,然后应用程序通常使用HTTP加载数据。如果您想在集群中这样做,米诺可能是另一种选择。
https://devops.stackexchange.com/questions/11482
复制相似问题