【问题标题】:kubernetes mount a directory readonly in all pod replicaskubernetes 在所有 pod 副本中以只读方式挂载一个目录
【发布时间】:2018-09-04 07:17:31
【问题描述】:

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

  1. pod 对目录的访问是只读的
  2. 整个目录树都可以在 pod 中访问
  3. 对目录内容的任何更改或在此目录中创建新文件和目录都会立即反映到 pod
  4. pod 的所有副本都看到相同的目录树

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

【问题讨论】:

  • 您要共享什么样的数据,为什么?您能否将您的数据存储需求外包给数据库——比如 redis 或 mongodb 集群,而不是使用文件系统?
  • 只是一个例子:将apache2 web服务器的配置目录保存在一个中心位置;更改内容或可能在此处添加新的配置文件;然后向所有 pod 发出信号以重新启动 apache
  • 您能否解释一下为什么 ConfigMaps 不适合您,因为您可以将包含所有包含目录和文件的目录存储在一个 ConfigMap 卷中。可能您对权利有一些问题,然后将其显示出来,我们将帮助您解决它。这是使用 ConfigMap 存储配置的最佳实践。
  • @NickRack 我从带有 --from-file 的目录创建了一个测试 ConfigMap,但 ConfigMap 中缺少子目录。我正在使用 minikube。

标签: kubernetes persistent-volumes configmap


【解决方案1】:

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

以下脚本 - 请参阅 here - 实现该方法。

注意:

  • (1) 现在是从 1.9.6 开始的默认值 - 请参阅 this 进行讨论。
  • (2) 的关键是使用projected volumes
  • (4) 是开箱即用的功能,如 here 所述,使用 subPath 时除外。
  • 对所有文件使用单个 configMap 可能会导致“...错误:ConfigMap “”无效:[]:太长:最多必须有 1048576 个字符”。
  • 对每个文件使用 configMap 的文件内容也有 ~1MB 的大小限制(这是一个 etcd 限制)。

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 1970-01-01
    • 2021-05-19
    • 2019-12-21
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多