Kubernetes 如何初始化动态配置的持久磁盘

Kubernetes 如何初始化动态配置的持久磁盘,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我目前正在研究在GCE应用程序中使用动态配置的持久性磁盘:在我的应用程序中,我有1-n个pod,其中每个pod包含一个容器,需要rw访问持久性卷。该卷需要预先填充一些从bucket复制的数据 我困惑的是;如果持久性磁盘是动态分配的,如何确保在将数据装载到pod之前将其复制到持久性磁盘上?数据的复制是不经常的,但有规律的,我唯一可能需要做的事情是,如果一个pod掉了下来,我需要一个新的持久性磁盘和pod来代替它 如何确保永久磁盘在装入我的pod之前已预填充 我目前的想法是将bucket安装到pod

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

我困惑的是;如果持久性磁盘是动态分配的,如何确保在将数据装载到pod之前将其复制到持久性磁盘上?数据的复制是不经常的,但有规律的,我唯一可能需要做的事情是,如果一个pod掉了下来,我需要一个新的持久性磁盘和pod来代替它

如何确保永久磁盘在装入我的pod之前已预填充

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


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

看起来该拷贝是一个很好的候选拷贝

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

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

  • 在主吊舱容器启动之前,副本已完成

  • 主容器不需要访问GCS,只需要动态创建PV

  • 如果“初始化容器”未能成功完成,则pod将无法启动并处于错误状态

  • 与N个pod的
    StatefulSet
    结合使用此方法效果很好,可以使用新磁盘初始化新副本,并在主容器映像(代码)更新中保持持久数据