2015-08-09 64 views
4

我有以下設置: Kubernetes在Mesos上(基於kubernetes-mesos項目)位於/ 16網絡中。 每個吊艙都將擁有自己的IP,我相信這將利用64000個吊艙。 這個想法是爲每個應用程序提供隔離,即每個應用程序都在同一個窗格中獲取自己的mysql - 應用程序訪問本地主機上的mysql(在窗格內)。 如果需要額外的服務,我會使用滾動更新的kubernetes將服務的容器添加到窗格,應用程序也能夠在本地主機上訪問此新服務。 每個應用程序都需要儘可能多的隔離。Mesos上的Kubernetes

  1. 這樣的實現有什麼缺陷嗎?
  2. 我必須使用編織嗎?
    • 有一個選項可以在運行kubernetes-mesos安裝時指定service-ip-range。
  3. 一個洞是如何擴展服務,這真的可行嗎?
  4. 有沒有更好的方法來做到這一點?即提供隔離服務

謝謝。 PS //我很明顯是一個noobie,我試圖讓最好的設置運行。

回答

2

這種設計適用於小型應用程序,但如果您突然想讓兩個服務的某些實例碰到相同的mysql後端,您就很難擴展。

您可能想要考慮將每個服務放入單獨的命名空間。然後,服務的DNS查找將默認限定在其自己的名稱空間中,以便除非明確查找其他服務的資源,否則它不會查找其他服務的資源。這可以讓你把mysql(和任何其他的依賴關係)放在一個單獨的pod中,這樣前端就可以獨立地進行縮放。

+0

這對我來說是完全正確的,命名空間讓我來規範資源即CPU,RAM,不過根據斯蒂芬Schimanski Kubernetes命名空間是唯一合乎邏輯和豆莢仍然可以找到對方如。 dns克服這個問題的一種方法是使用授權和身份驗證插件,是否有更好的方法來完全分離pod組?除了創建覆蓋網絡? – Jonathan

3

一個常見的誤解是Pod應該管理一個垂直的多層堆棧:例如一個Web層+ DB層。

閱讀Kubernetes design intent of Pods很有意思:它們是收集「幫手」過程而不是組成垂直堆棧。

要回答你的問題,我建議:

  • 定義只適用於網絡層的分離艙模板。這可以使用複製控制器(問題#1和#3)縮放到任何所需的大小。
  • 定義另一個Pod for MySQL。使用Service abstraction找到這些組件。
+0

缺點是,香草MySQL不能很好地擴展,並且不是雲特有的。你可能想要爲生產做的事情是部署一個像[Galera](http://galeracluster.com/products/)的HA mysql包裝器。我不知道在Kubernetes做過的任何人。但是,如果你無法弄清楚,你總是可以在外部託管它並使用無頭服務讓k8s pod找到它。 – KarlKFI

+0

謝謝,最好的解決方案似乎是應用程序容器的一個單獨的窗格,每個服務都有一個單獨的窗格,並將其全部放在名稱空間中,這樣就可以實現一定程度的分離,並且可以根據需求縮放每個組件的內容。 – Jonathan

+0

One讓我困擾的東西,是否爲應用程序窗口創建服務是「正確的」?例如。我在這個窗格中有一個Python/Flask應用程序,我爲它定義了一個服務?我已經在tutum的wordpress教程中發現了這個問題 – Jonathan