【问题标题】:How to initialize a dynamically provisioned persistent disk如何初始化动态配置的永久性磁盘
【发布时间】:2019-02-26 01:45:41
【问题描述】:

我目前正在研究在 GCE 应用程序中使用动态配置的永久磁盘:在我的应用程序中,我有 1-n 个 pod,其中每个 pod 包含一个需要对持久卷进行 rw 访问的容器。该卷需要预先填充一些从存储桶中复制的数据。

我感到困惑的是;如果永久磁盘是动态分配的,我如何确保在将数据挂载到我的 pod 之前将数据复制到其中?数据的复制很少但经常发生,我唯一可能需要不按顺序执行此操作的情况是,如果 pod 倒下,我需要一个新的永久性磁盘和 pod 来代替它。

如何确保在将永久磁盘挂载到我的 pod 之前对其进行预填充?

我目前的想法是将存储桶安装到 pod 上,并作为 pod 启动的一部分,从存储桶复制到永久磁盘。这会产生另一个问题,因为存储桶无法写入启用并安装到多个 pod。

注意:我使用的是单独的永久性磁盘,因为我需要它作为 ssd 以提高速度。

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    看起来该副本很适合作为"init container" 完成。

    这样每次 pod 启动时,“init 容器”都会连接到 GCS 存储桶并检查数据的状态,如果需要,将数据复制到动态分配的 PersistentDisk。

    完成后,Pod 的主容器将启动,并准备好数据供其使用。通过使用“初始化容器”,您可以保证:

    1. 复制在您的主 pod 容器启动之前完成。

    2. 主容器不需要访问GCS,只需要动态创建的PV。

    3. 如果“init 容器”未能成功完成,那么您的 pod 将无法启动并处于错误状态。

    与 N 个 Pod 的 StatefulSet 结合使用时,这种方法效果很好,能够使用新磁盘初始化新副本,并在主容器映像(代码)更新中保持持久数据。

    【讨论】:

      猜你喜欢
      • 2019-04-09
      • 2019-01-26
      • 1970-01-01
      • 2019-02-08
      • 2016-09-02
      • 2018-03-28
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多