2017-08-31 21 views
1

我有一个服务,它使用的动物园管理员选出的佼佼者运行3个节点的应用程序吊舱。我希望将服务请求重定向到某个吊舱,具体取决于它是否是领导者。我在我的应用程序中有一个http方法,如果它是领导者或不(如果这有帮助)返回。如何进行负载平衡的服务请求来根据条件

+0

欢迎来到Stack Overflow!请参考[tour](https://stackoverflow.com/tour),环顾四周,阅读[帮助中心](https://stackoverflow.com/help),特别是[我该怎么问一个很好的问题?(https://stackoverflow.com/help/how-to-ask) – user5226582

+0

你也可能想看看kubernetes [文档页面(https://stackoverflow.com/documentation/kubernetes/主题)在它关闭之前。没有太多,但也许会给你一个出发点,以便你可以提出更具体的问题。 – user5226582

回答

0

我不知道这样做的一个K8S功能。

我会怎么做: 写一个小应用程序,它看起来对现有服务的端点,搜索当前的领导者,并创建一个端点指向领导者/更新第2个服务而不选择(https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors)。然后,您可以为您的仪表板使用该新服务。

+0

谢谢您的回答。所以,你说要使用像cron这样的工作来不断地搜索和更新领导者,对吧? – user8543888

+0

https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#schedule这样 – user8543888

+0

不知道如果我想创建一个长期运行的应用程序,定期查找的领导者,或使用一个cronjob看起来一次对于领导者......可能没有太大的区别。 另一个想法:我没那么熟悉的饲养员,也许它甚至有可能有直接观看的变化,具有长期运行的HTTP请求或WebSocket的?这比轮询更好,因为您可以在领导者变更后立即更新服务,而不是在下一轮投票后更新。 –

0

要做到这一点,使用StatefulSet,例如,继example here

+0

是的,我使用一个StatefulSet部署我的应用程序。也许我没有很好地表达我的问题。我的应用程序有一个仪表板,但这个仪表板只能由领导者访问。这意味着,当我尝试使用该服务访问仪表板时,有时它运行良好,有时不会(由于服务的负载平衡,有时会到达领导者,有时会到达副本/从属)。那么,有没有一种方法可以将服务配置为仅将请求负载平衡到我的应用程序的领导者?现在感谢您 – user8543888