在pod中挂载外部目录的最佳方法是:

  • 对目录的pod访问权限为只读
  • 整个目录树可在pod
  • 中访问
  • 对目录内容的任何更改或在此目录中创建新文件和目录的任何操作都会立即反射(reflect)到pod
  • pod的所有副本都看到相同的目录树

  • 显然,使用ConfigMaps的任何解决方案都不满足条件2和3。

    最佳答案

    使用configMap-s可以满足(1)至(4)的所有要求,但(3)的一部分除外-对现有文件内容的更改(通过更改configMap-s)将立即(几乎)反射(reflect)在pod中,但是新文件或目录不会。

    以下脚本(请参阅here)实现了该方法。

    注意:

  • (1)现在是默认值,从1.9.6开始-请参见this进行讨论。
  • (2)的关键是projected volumes的使用。
  • (4)与here一样是开箱即用的功能,但使用subPath时除外。
  • 对所有文件使用单个configMap可能会导致“...错误:ConfigMap“”无效:[]:太长:最多只能包含1048576个字符”。
  • 每个文件使用configMap的文件内容大小限制也约为1MB(这是etcd限制)。
  • 关于kubernetes - kubernetes在所有Pod副本中将目录挂载为只读,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52160823/

    10-15 22:01
    查看更多