在 Kubernetes 上调试 colissionCount

Debugging colissionCount on Kubernetes

我在 Openshift 中有一个 StatefulSet 不断重启,但只在一个节点上。我在 PODs 日志中没有看到任何内容。在 /var/log/messages 中,我只看到容器正在重启、卷已卸载等消息,还有一些更神秘的 'error: Container is already stopped''cleanup: failed to unmount secrets: invalid argument'.

但是,当我查看 StatefulSet 的 Yaml 时,我看到以下内容:

status:
  collisionCount: 1
  currentReplicas: 1

我想这才是真正的原因。
但是我怎样才能找出是什么导致了碰撞呢?

您是否尝试 kubectl describe pod 查找事件?

StatefulSets 通过 ControllerRevisionsgenerate a hash for each version 在内部执行数据快照。

collisionCount 表示 ControllerRevision 哈希冲突,可能是由于 implementation issue.

您可以尝试通过获取控制器修订来排除此问题:

$ kubectl get controllerrevisions

由于这是对象中的一种内部机制,因此除了重新创建对象以生成不会冲突的新散列外,几乎没有什么可做的。有一个 merged PR that suggests that newer versions shouldn't face this issue. However, it might be the case 你是 运行 没有这个补丁的版本。