Kubernetes如何跟踪哪个云盘连接到StatefulSet中的哪个Pod?

时间:2018-01-13 18:00:48

标签: kubernetes google-cloud-platform google-kubernetes-engine

我在GKE上创建了一个StatefulSet,它配置了一堆附加到属于该StatefulSet的pod的GCE磁盘。假设我将StatefulSet缩放为0:构成pod被销毁并且磁盘被释放。当我缩放时,磁盘将重新连接并安装在正确的pod中。

我的问题是:

  • Kubernetes如何跟踪哪个GCE磁盘重新连接到哪个StatefulSet pod?
  • 假设我想从快照恢复StatefulSet Pod的PV。如何让Kubernetes使用从快照创建的磁盘而不是旧磁盘?

2 个答案:

答案 0 :(得分:4)

当您将StatefulSet扩展为0个副本时,pod会被销毁,但会保留持久卷和持久卷声明。与GCE磁盘的关联写在PersistentVolume对象中。再次缩放RS时,将pod分配给正确的PV,从而从GCE获得相同的音量。

为了在快照恢复后更改持久卷 - GCE磁盘关联,您需要编辑PV对象。

答案 1 :(得分:1)

Kubernetes 1.12开始使用Kubernetes的 Snapshot / restore (快照/还原)功能和CSI (Container Storage Interface)(具有Alpha功能)引入了更广泛的解决方案。
这提供了标准化的API设计(CRD),并为CSI volume drivers添加了PV快照/恢复支持。

这不再特定于GKE。

请参阅功能请求“ Snapshot / Restore Volume Support for Kubernetes (CRD + External Controller)”及其关联的CSI snapshot design

statefulSet方面在beta级别为not yet fully addressed in this,但将来会出现:

  

以下是当前阶段的非目标,但将在以后的阶段中考虑。

     

目标5:提供更高级别的管理,例如备份和还原pod和statefulSet,以及创建一致的快照组。

请参见PR for the documentation:“ Volume Snapshot and Restore Volume from Snapshot Support