我遵循this article to use k8s leader election来获取我的应用程序的HA。但是我遇到了一个问题。谁能有同样的经历?例如我有4
pods 副本。其中一个广告连播已被选为领导者。当该领导者连环掉下时(例如,手动杀死该连体),调度程序将花费30–40秒来启动一个新的连环,但是旧的死掉的领导者将保持10秒钟或更长时间来续订。领导者 Pane 失效后,是否可以立即更新领导者?还是我错过了任何设置?
在我所引用的文章中,它提到了以下正是我所遇到的问题的内容:
这是我正在使用的演示Yaml文件。
https://gist.githubusercontent.com/ginkgoch/563d8d8caf9e4dd99a0c8de323e9211c/raw/f1abb94647c60874e4625b1b94f8fa125bd1a5ea/k8s-leader-election.yaml
最佳答案
文章解释了这是由于宽限期。发出杀死消息后,领导 pods 尚未死亡,它只是关闭了。
您可以使用force delete缩短或跳过关闭过程,也可以在规范中更改the grace period。这样做的风险是,如果未完全清理容器,则容器可能会关闭-您将知道这是否与容器相关。
从理论上讲,只要Pod开始终止,就可以收听preStop hook并开始进行领导者选举。但是,当老领导者终止时,您可能会有两个领导者的风险(k8此时应停止向老领导者发送流量,但根据您的设计,它可能仍会做一些重要的事情)。 k8s.gcr.io/leader-elector
实现似乎需要等待旧的领导者完全停止。可能还有其他实现可能支持立即选举的实现,但是我没有进行快速搜索就发现任何实现,而且我认为等待老领导离职并不罕见。
关于kubernetes - 领导者连队死亡时,我们可以立即更新k8s领导者吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52951363/