2015-07-21 76 views
2

我想了解處理有幾個節點和一個主節點的Kubernetes羣集的好方法。 我在我的公司的雲中託管集羣,普通的Ubuntu盒(因此沒有Google Cloud或AWS)。爲無狀態web應用程序創建多節點Kubernetes羣集

每個窗格包含webapp(這是無狀態的),我通過複製控制器運行任意數量的窗格。

我看到與服務,我可以申報PublicIPs但是這是令人困惑,因爲在我的奴才節點添加ip地址 後,每個ip只公開它運行的pod,它不會做任何形式的負載平衡。因此, 如果一個節點沒有任何活動的pod運行(因爲創建的pod是在節點間隨機分配的),它只是超時,並且我結束了一些不響應的IP地址。我理解這個錯誤嗎?

我該如何真正地爲我的web應用程序做一個適當的外部負載平衡?我應該在Pod級別上進行負載平衡,而不是使用Service? 如果是這樣,豆莢被認爲是致命的,他們可能動態死亡和出生,我如何跟蹤這一點?

回答

2

最近PublicIP的事情正在發生變化,我不知道它到底在哪裏。但是,服務是您在應用程序中引用的IP地址和端口。換句話說,如果我創建了一個數據庫,我將它創建爲一個pod(帶或不帶複製控制器)。但是,我不會連接到其他應用程序的Pod。我連接到了解該吊艙的服務(通過標籤選擇器)。這很重要,原因很多。

  1. 如果數據庫失敗並重新創建一個不同的主機上,還是訪問它的應用程序引用(固定)服務的IP地址,kubernetes代理拿得到請求發送到正確吊艙的照顧。
  2. 服務地址爲所有Kubernetes節點所知。任何節點都可以正確代理請求。

我認爲這個主題的變體適用於您的問題。您可能會考慮創建一個外部負載平衡器,將流量轉發到特定(Web)服務的所有節點。如果節點發生故障,您仍然需要將節點從平衡器的目標中取出,但是,我認爲任何節點都會轉發任何服務的流量,而不管該服務是否在該節點上。

所有這一切說,我沒有外部(公共)IP地址負載平衡的直接經驗集羣,所以有可能更好的技術。我試圖做的主要觀點是,無論節點是否具有吊艙,節點都會將請求代理到適當的吊艙。

-g