首页 > 解决方案 > 有状态集不转移到新节点

问题描述

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

我错过了什么?

标签: kuberneteskubernetes-statefulset

解决方案


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

默认情况下,Kubernetes 总是尝试在配置 PVC 的同一节点上创建 Pod,这就是 Pod 在删除时总是出现在同一节点上的原因。

cordon这个PVC只有当你节点,drain节点和集群中的节点时才会进入其他节点delete,现在master知道这个节点在集群中不存在。因此,master 将 PVC 移动到另一个节点,并且 pod 出现在该节点上。


推荐阅读