【发布时间】:2021-04-22 07:39:34
【问题描述】:
我正在为我的 kafka 集群运行 3 个 zookeeper kubernetes statefulset。命名为 zookeeper-0、zookeeper-1、zookeeper-2。而且我使用 ruok 命令启用了活跃度探测。如果任何 statefulset pod 由于任何故障而重新启动,则仲裁将失败,并且即使在失败的 pod 启动并且其 liveness probe 响应正常之后,zookeeper 也会停止工作。
发生这种情况时,我必须手动重新启动所有 zookeeper 实例才能使其恢复工作。当我进行 helm 升级时也会发生这种情况。因为当我进行 helm upgrade 时,第一个重启的实例是 zookeeper-2,然后是 zookeeper-1,最后是 zookeeper-0。但似乎只有当我一起启动所有实例时,zookeeper 才会起作用。因此,每次 helm 升级后,我都必须手动重启所有实例。
我的问题是:
这种行为的原因可能是什么?另外,在 Kubernetes 环境中确保 100% 可靠的 statefulset zookeeper 的最佳方法是什么?
【问题讨论】:
-
我关注了这份文档cinhtau.net/2018/03/08/replicated-zookeeper。并将最小 Zookeeper 从 3 个实例更新为 5 个实例。这允许 2 个实例失败,但仍然允许 zookeeper 服务请求。
标签: apache-zookeeper kubernetes-statefulset livenessprobe