我有多个k8 pod在运行我的服务,其中存在连接到zookeeper(作为集群运行),然后参与path /election上的领导者选举的逻辑。现在,因为有多个应用:App 1,App 2,App 3和它们都在运行我的服务,因此它们下面的所有pod都连接到zk并参与领导者选举。但我只希望App 1的pod连接到这个zk路径并参与领导者选举。应用程序的数量可以增加/减少。
我有一种方法可以获得pod的应用程序ID,这样就可以更改代码,只将特定的应用程序pod连接到zk路径。但是,使用这种方法,其他应用程序pod需要有最新的代码更改,这是不能保证的。还有一种方法可以在zk本身中保存一个配置,在那里我们可以有一个脚本来确定服务器是否可以连接到特定的zk路径?
1条答案
按热度按时间mw3dktmi1#
我可以想到的一种方法是,您可以使用ACL保护
/election
路径,并使其仅可由App1访问。您可以仅给予App1在该路径下的创建权限,并使用密码对其进行保护,这样,只有App1能够在/election
路径下创建临时节点,而无法访问此密码的其他应用程序将无法在此路径下创建节点。此方法中的一个警告是,从您为此路径创建ACL的那一刻起,App1以外的应用程序将开始看到***未经授权的错误***。