如果StatefulSet被删除并重新创建,持久卷会发生什么?

时间:2019-07-11 17:41:10

标签: kubernetes apache-kafka

我把卡夫卡和动物园管理员当成有状态的人,并将卡夫卡暴露在星团的外面。但是,每当我尝试删除Kafka状态集并重新创建它时,数据似乎都消失了吗? (当我尝试使用kafkacat使用所有消息时,旧消息似乎消失了),即使它使用的是相同的PVC和PV。我目前正在使用EBS作为我的永久量。

有人可以向我解释删除有状态集时PV发生了什么吗?请帮助我。

3 个答案:

答案 0 :(得分:1)

我可能会看一下如何创建持久卷。 如果运行命令 kubectl get pv 您会看到Reclaim policy,如果将其设置为保留,那么即使删除有状态的集,您的卷也将保留

答案 1 :(得分:1)

这是预期的行为,因为新的statefulSet将创建一组新的PV并重新开始。 (如果没有其他选择,它也可以随机降落在旧的PV上,例如本地体积)

StatefulSet并不意味着kubernetes会记住您在其他已删除的旧statefulset中所做的事情。

Statefulset意味着,如果出于某种原因重新启动或重新创建了Pod,则会为其分配相同的卷。这并不意味着将在StatefulSet中分配该卷。

答案 2 :(得分:0)

我假设您的情况是您有一个有状态集,该状态集中有一个persistentvolumeclaim定义-或者它仅引用一个现有的卷,然后尝试删除它。

在这种情况下,持久卷将保留在那里。而且pvc不会消失;

这样,您可以根据需要将相同的卷重新安装到不同的有状态集pod上,或者对其上一个进行更新。

如果您要删除永久卷,则应删除pvc,并且随后的PV将消失。