领导者连队死亡后,我们可以立即更新k8s领导者吗?

时间:2018-10-23 14:19:10

标签: kubernetes leader-election

我跟随this article to use k8s leader election进行了我的应用程序的HA。但是我遇到了一个问题。谁能有同样的经历?例如我有4 吊舱副本。其中一个广告连播已被选为领导者。当该领导者连环掉下时(例如,手动杀死该连体),调度程序将花费30–40秒来启动一个新的连环,但是旧的死掉的领导者将保持10秒钟或更长时间来续订。领导者窗格失效后,是否可以立即更新领导者?还是我错过了任何设置?

在我所引用的文章中,它提到了以下正是我所遇到的问题的内容:

  

由于Kubernetes中的Pod在终止前有一个宽限期,因此可能需要30-40秒。

这是我正在使用的演示Yaml文件。 https://gist.githubusercontent.com/ginkgoch/563d8d8caf9e4dd99a0c8de323e9211c/raw/f1abb94647c60874e4625b1b94f8fa125bd1a5ea/k8s-leader-election.yaml

1 个答案:

答案 0 :(得分:2)

文章解释了这是由于宽限期造成的。发出杀死消息后,领导者荚尚未死亡,它只是在关闭。

您可以使用force delete缩短或跳过关闭过程,也可以更改规范中的the grace period。这样一来,风险就是吊舱可能会在没有完全清理的情况下关闭-您会知道这是否与您的吊舱有关。

从理论上讲,只要广告连播开始终止,就应该可以收听preStop hook并开始进行领导选举。但是,当老领导者终止时,您可能会有两个领导者的风险(k8此时应停止向老领导者发送流量,但根据您的设计,它可能仍会做一些重要的事情)。 k8s.gcr.io/leader-elector实现似乎需要等待旧领导者完全停止。可能还有其他实现可能支持立即当选的实现,但是我没有进行快速搜索就发现任何实现,而且我认为等待老领导离职并不罕见。

相关问题