在Docker容器部署中(在Kubernetes中)置换静态目录结构的最佳实践?

时间:2020-05-05 00:39:04

标签: docker kubernetes google-kubernetes-engine

我有一个基本图片和完全静态叠加层的几个完全正交的“维度”,这些叠加层映射到数据目录中,每个目录都有多个选项,我希望对其进行置换以生成最终的容器我的部署。作为简并的示例,基本映像(X)在部署时将需要(A,B,C),(P,D,Q)和(K,L,M)中的每一个。我现在正在做的是为最终需要的每个置换构建单独的图像: XADM,XBDK等。问题在于,随着静态数据覆盖图维数的增加以及每个维内的选择数变大,我遇到了严重的组合爆炸问题-CI / CD系统可能需要10分钟来构建每个图像(有些覆盖物很大),并且由于它是变化最大的基础图像,因此图层的缓存效果不好。

到目前为止的想法:

  1. 将每个层(ABCPDQKLM)生成为单独的容器,该容器填充一个卷,然后由我的每个X容器装入该卷。很好,尽管我从不要求这些层是可写的,并且特别不想为与感觉像是多余的卷相关的持久性存储付费。
  2. 重新排列我的图层以使其变化最快。通过这样做,我可以得到一些改进,但是仍然遇到了组合问题:我可能仍然必须构建所需的所有组合,但是至少可以缩短CI / CD的构建时间。我认为这会导致整体层缓存更差,但为了时间而折衷空间可能是合理的,并且每个租户的结果仍然不错,并且在部署期间不会产生任何卷存储。

我对这两个选项(或当前的解决方案)都不满意。任何想法都将受到欢迎。

编辑/问题:

  1. “静态”是指只读的,但实际上,A / B / C覆盖可能每个都是要安装在容器文件系统中特定位置的100MB目录结构。在每种情况下,基础映像中的程序都将使用这些数据(甚至是内存映射!),因此至少需要非常有效地将其缓存在将要使用它的每个CPU附近。我喜欢将数据烘焙到容器中的性能特征,但也许我应该更多地信任存储层,以使数据在真实CPU附近正确缓存/复制。这样做意味着要权衡注册表空间费用和PV存储费用,但这可能是个小问题。
  2. 基本上,每个“维度”都是一种训练有素的机器学习模型。我需要通过选择正确的一组受过训练的模型来组合维度,以适合许多生产租户中每个租户所需的领域。

0 个答案:

没有答案