【问题标题】:Stateful set not shifting to a new node有状态集不转移到新节点
【发布时间】:2018-12-14 16:48:06
【问题描述】:

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

我错过了什么?

【问题讨论】:

    标签: kubernetes kubernetes-statefulset


    【解决方案1】:

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

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

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

    【讨论】:

    • 那么,如果StatefulSet不能自动failover,有没有其他方法可以让这种有状态的app(比如mysql with pvc)在node出现意外故障时自动failover?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2014-04-04
    • 2017-06-23
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多