2017-08-31 50 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