从Kubernetes的一组候选Pod中正确选举领导者的正确方法

时间:2019-07-01 07:38:08

标签: kubernetes

要执行领导者选举,Kubernetes文档建议在候选吊舱集合中部署侧车。

https://kubernetes.io/blog/2016/01/simple-leader-election-with-kubernetes/

这辆副车按照以下步骤选举一位领导人。

  1. 如果不存在有效的领导者,那么每辆侧面汽车都会尝试自动更新Kubernetes端点对象。只有侧面汽车之一可以成功更新端点对象。
  2. 更新端点的侧车将在指定的持续时间内担任领导者。
  3. 当前领导者将再次更新端点以延长持续时间,以保持领导地位。
  4. 存在有效的领导者后,其他副车将不会尝试再次更新端点。
  5. 如果当前领导者未在该持续时间内更新端点,其他副车将认为该领导者已被撤销。所有侧车将进入步骤1。

这种方法几乎没有问题。

  1. 可以在短时间内同时运行2位领导者。 示例:

如果当前领导者挂起并且无法及时更新端点,则另一辆侧面汽车将获得领导。但是前任领导人要花一些时间才能意识到其领导地位被撤销。在这短暂的时间内,现有的2位领导者可以破坏共享的资源/数据。

在源代码中也提到了这一点。

This implementation does not guarantee that only one client is acting as a leader (a.k.a. fencing).
  1. 此副车的源代码已退役/已存档。因此,它不在积极发展中。 https://github.com/kubernetes-retired/contrib/tree/master/election

那么,用Kubernetes选举领导人的正确方法是什么?

0 个答案:

没有答案