Kube StatefulSet Generation Mismatch

KubeStatefulSetGenerationMismatch #

含义 #

StatefulSet 的 generation 不匹配,通常是 StatefulSet 失败了但还没有回滚导致。

影响 #

服务性能下降,甚至不可用。

诊断 #

消息详情/标签中包含 StatefulSet 的名称和 Namespace 信息。

  • 检查 StatefulSet 的部署状态:kubectl -n $NAMESPACE rollout status statefulset $NAME
  • 检查 StatefulSet 的部署历史:kubectl -n $NAMESPACE rollout history statefulset $NAME
  • 检查 StatefulSet 状态:kubectl -n $NAMESPACE describe statefulset $NAME
  • 检查声明的副本数量。
  • 检查 StatefulSet 的更新策略
  • 检查 StatefulSet 下是否有新的 pod crash。
  • 检查 StatefulSet 的当前 ControllerRevision,以及该 ControllerRevision 下的 Pods 状态。
  • 检查 StatefulSet 与卷的连接是否存在问题。

缓解 #

阅读应用的相关文档,或与应用的开发者沟通,确保定义了合适的配置来启动或更新应用。

Statefulset 比较特殊,Pod 终止前一般会有特殊的处理逻辑。比如看看是否执行了数据迁移等特殊命令,这可能会大大减慢进度。

如果是横向扩展时出现这个问题,通过添加新节点可能解决它,否则可能需要修复 StatefulSet 配置。

少数情况下可能需要回滚到先前版本,参考滚动更新文档

极少数情况下可能需要删除有问题的 Pods。

查看调试 Pods