有状态集不会转移到新节点

时间:2018-12-14 16:48:06

标签: kubernetes kubernetes-statefulset

我在Kubernetes集群上部署了有状态的set应用程序。它具有永久卷等,并且是一个永久副本。我面临的问题是,当我关闭运行有状态集的节点时,pod不会在新节点上重新启动。它继续等待节点启动,并最终在同一节点上重新启动。我缺少StatefulSet规范中的某些设置吗?我已经按照Kubernetes指南中提到的示例进行了设置:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#components

我想念什么?

1 个答案:

答案 0 :(得分:1)

这是设计使然。当节点“关闭”时,主节点不知道它是安全关闭(故意关闭)还是网络分区。因此,具有该节点的PVC保留在同一节点上,并且主节点将该节点上的容器标记为Unknown

默认情况下,Kubernetes总是尝试在提供PVC的同一节点上创建pod,这就是删除后pod总是出现在同一节点上的原因。

仅当您从群集中cordon个节点,drain个节点和delete个节点时,此PVC才会进入其他节点。现在,主节点知道此节点在群集中不存在。因此,主服务器将PVC移动到另一个节点,并且在该节点上出现pod。