Kubernetes为所有吊舱提供服务,另一个只为领导者提供服务

Kubernetes为所有吊舱提供服务,另一个只为领导者提供服务,kubernetes,client-go,leader-election,Kubernetes,Client Go,Leader Election,在Kubernetes中,是否有可能为一次部署提供两个服务,一个是“标准”服务,在所有准备就绪的吊舱前提供代理,另一个是仅向当选领导人发送流量的服务?如果是,怎么做?我正在用它来竞选领导人。这些是第4层服务 我知道服务可以使用标签作为选择器,但是clientgo使用注释来标记引线。在中使用和创建/删除端点似乎有问题。多谢各位 在Kubernetes中,是否有可能为一次部署提供两个服务,一个是“标准”服务,在所有准备就绪的吊舱前提供代理,另一个是只向当选的领导人发送流量的服务 是的,但它似乎有点粗

在Kubernetes中,是否有可能为一次部署提供两个服务,一个是“标准”服务,在所有准备就绪的吊舱前提供代理,另一个是仅向当选领导人发送流量的服务?如果是,怎么做?我正在用它来竞选领导人。这些是第4层服务

我知道服务可以使用标签作为选择器,但是clientgo使用注释来标记引线。在中使用和创建/删除端点似乎有问题。多谢各位

在Kubernetes中,是否有可能为一次部署提供两个服务,一个是“标准”服务,在所有准备就绪的吊舱前提供代理,另一个是只向当选的领导人发送流量的服务

是的,但它似乎有点粗糙。服务的工作方式如下:

服务->服务标签选择端点->端点->端点标签选择吊舱->吊舱(PodIP)

  • 因此,您可以有一个常规的“服务”,指向部署中的所有pod或StatefulSet,该服务自动提供所有端点

  • 您还可以单独手动创建另一组+每个,使其标签相互匹配,然后手动使该端点与您选择的pod标签匹配

  • 现在关于。它似乎可以使用或锁作为引线(示例显示了一个锁)。但是,看起来您想要使用端点锁。所以这个包不适用于服务或标签,它看起来只适用于端点资源。因此,从本质上讲,如果您有3个节点,并且想要找到引线,则必须使用3个手动创建的端点资源。作为引线的引线将始终具有注释

    现在你怎么把它和上面的联系起来?当您的客户选择或选择领导者时,您还必须更改端点标签,以便它们与您手动创建的无头服务相匹配。(也可以在您的代码中完成)

    您也可以选择只使用上述端点(无头服务),并让客户机go/leaderelection直接与端点对话

    另一种选择是利用它的优势和它所需要的优势。因此,该服务将解析为基于仲裁的群集中所有副本的IP地址。领导人选举将取决于客户端包(客户端go似乎不支持此功能),这对于大多数基于仲裁的应用程序(K8s、Zookeeper、Kafka、Etcd等)来说都是非常合适的;客户是发现谁是领导者的人


    ✌️

    是第4层还是第7层服务?@rico我编辑了这个问题,想弄清楚你也在运行州集吗?@rico我不是,但我可以,如果我真的希望有更简单/不太粗糙的东西的话。但我相信你的答案确实有效。如果没有人用更简单的回答,我会接受这个答案。非常感谢。