如何初始化动态预配置的永久磁盘

时间:2019-02-25 17:10:08

标签: kubernetes google-kubernetes-engine

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

我很困惑的是;如果永久磁盘是动态分配的,那么如何确保在将数据挂载到吊舱之前将数据复制到该磁盘上?数据的复制很少,但是很常规,我唯一可能需要按顺序执行此操作的步骤是:如果Pod跌落了,而我需要一个新的永久性磁盘和Pod来代替它。

在将永久性磁盘安装到pod之前,如何确保已预先填充了永久性磁盘?

我当前的想法是将存储桶安装到Pod,并作为Pod启动的一部分,从存储桶复制到永久磁盘。这就产生了另一个问题,因为无法对存储桶进行写操作并将其安装到多个Pod。

注意:我正在使用单独的永久磁盘,因为我需要它作为速度的ssd。

1 个答案:

答案 0 :(得分:1)

看起来该副本很适合作为"init container"使用。

这样,在每个Pod启动时,“初始容器”将连接到GCS存储桶并检查数据状态,如果需要,可将数据复制到动态分配的PersistentDisk。

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

  1. 在主容器容器启动之前,副本已完成。

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

  3. 如果“初始化容器”未能成功完成,则您的pod可能无法启动,并且处于错误状态。

此方法与N个容器中的StatefulSet结合使用,在能够使用新磁盘初始化新副本以及在主容器映像(代码)更新中保持持久数据方面,该方法效果很好。 / p>