我的设置类似于主动/被动部署,但我想使用kubernetes租约和leader选举来管理主动pod。
leader election完全按照预期工作,Lease对象也被创建和维护(大致基于这篇文章https://carlosbecker.com/posts/k8s-leader-election/),但是当我试图使用这个租约信息作为服务选择器并且只向活动pod发送流量时,我被卡住了。
Fwiw,我在租约本身中有这些信息:
Spec:
Acquire Time: 2023-06-06T17:45:49.962378Z
Holder Identity: leader-test-585469899d-t84qx
Lease Duration Seconds: 15
Lease Transitions: 2
Renew Time: 2023-06-06T17:55:11.891018Z
有没有人能给予我一些提示,如何让这个工作?
我确实想过在leader-elector sidecar中添加逻辑,可以在活动pod上设置标签并将其用作服务选择器,但后来我意识到这个标签可能会立即被部署恢复,所以我放弃了这个想法。
1条答案
按热度按时间qeeaahzv1#
我没有直接的答案,只有一个建议:
你的服务必须有一些逻辑来决定领导者做什么或不做什么,我假设集合中的每个pod都知道领导者是谁,因为他们可能会选择它,所以我建议的是简单地实现对集合中每个pod中的领导者的有条件重定向,这样如果非领导者接收到针对领导者的流量,它会将其重定向到领导者。