有状态集不转移到新节点
Stateful set not shifting to a new node
我已经在我的 Kubernetes 集群上部署了一个有状态集应用程序。它有持久卷等和一个副本。我面临的问题是,当我关闭状态集为 运行 的节点时,pod 不会在新节点上重新启动。它继续等待节点启动并最终在同一节点上重新启动。 StatefulSet 规范中是否有一些我遗漏的设置。我按照 Kubernetes 指南中提到的示例进行设置:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#components
我错过了什么?
这是设计使然。当一个节点变为 "down" 时,master 不知道它是安全关闭(故意关闭)还是网络分区。因此,具有该节点的 PVC 保留在同一节点上,主节点将该节点上的 pods 标记为 Unknown
默认情况下,Kubernetes 始终尝试在提供 PVC 的同一节点上创建 pod,这就是删除时 pod 始终出现在同一节点上的原因。
只有当你cordon
节点,drain
节点和delete
集群中的节点时,这个PVC才会进入其他节点,现在master知道这个节点不存在于簇。因此 master 将 PVC 移动到另一个节点并且 pod 在该节点上出现。
我已经在我的 Kubernetes 集群上部署了一个有状态集应用程序。它有持久卷等和一个副本。我面临的问题是,当我关闭状态集为 运行 的节点时,pod 不会在新节点上重新启动。它继续等待节点启动并最终在同一节点上重新启动。 StatefulSet 规范中是否有一些我遗漏的设置。我按照 Kubernetes 指南中提到的示例进行设置:https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#components
我错过了什么?
这是设计使然。当一个节点变为 "down" 时,master 不知道它是安全关闭(故意关闭)还是网络分区。因此,具有该节点的 PVC 保留在同一节点上,主节点将该节点上的 pods 标记为 Unknown
默认情况下,Kubernetes 始终尝试在提供 PVC 的同一节点上创建 pod,这就是删除时 pod 始终出现在同一节点上的原因。
只有当你cordon
节点,drain
节点和delete
集群中的节点时,这个PVC才会进入其他节点,现在master知道这个节点不存在于簇。因此 master 将 PVC 移动到另一个节点并且 pod 在该节点上出现。