我有一个有状态的应用程序,我想与Kubernetes一起使用,所以我看着StatefulSet。似乎StatefulSets是我部署的一个很好的候选者,但我担心由于我们在云基础设施上,它不能幸免于节点中断。
如果我的应用程序是无状态的,管理员可以删除节点并添加节点而不必担心应用程序,因为pod将被逐出并分配给不同的节点。但由于我的应用程序是有状态的,它会将数据本地存储到PersistentVolume。我的问题是,如果包含我的应用程序的PersistentVolume的节点耗尽,我的数据会发生什么?它消失了吗?或者在排空时是否迁移到另一个节点?我在文档中找不到明确的答案。
答案 0 :(得分:0)
正如您所说,如果您使用本地存储在节点上使用Persistent Volume存储数据,那么该数据的生命周期取决于节点的生命周期。因此,它的单点故障。它没有为k8s提供灵活性。由于有状态的设置pod需要在该特定节点上。
如果您使用永久卷或存储类来使用外部存储,它只会删除单点故障并为有状态容器提供灵活性。现在,您需要向pod提供显式信息,如果pod死亡,您希望如何处理数据。