2015-06-29 71 views
1

如果我有一個多層應用程序(比如web/logic/database),每個層都有自己的容器,並且我需要部署所有這些容器,他們都必須進入同一個吊艙?如何使用Kubernetes部署多層應用程序

如果它們在同一個窗格中,這對於可運行的應用程序的最大大小是否有任何影響?

還是有一些更高層次的抽象,我可以用它來啓動所有三層,但讓他們在不同的爪牙上運行?

回答

0

爲什麼您需要將所有組件部署在一起?在微服務體系結構中,您希望將每個圖層之間的依賴關係減少到一個乾淨的界面,然後允許將每個圖層與其他圖層分開部署和縮放。

如果您需要將它們部署在一起(例如它們共享本地磁盤或本地主機網絡),那麼您需要將它們部署爲單個羣集。一個單元是一個原子調度單元,因此它將被部署到一臺主機上。由於它位於單個主機上,因此將應用程序的可擴展性限制爲單個主機的大小(不允許隨着流量的增加進行擴展)。

如果你的三層不緊密耦合,那麼你可以在不同的pod中運行它們,這使得它們可以在多個主機上進行調度(或者如果你正在進行本地開發,則可以在同一主機上進行調度)。要將Pod連接在一起,您可以定義services

您應該看看guestbook example,它說明了如何爲在Kubernetes上運行的簡單多層Web應用程序定義窗格和服務。

+0

我正在考慮這裏的一所舊學校申請,我想收藏。 因此,「部署應用程序」意味着部署所有組件。他們可以在單獨的機器上運行,但從用戶角度來看,應用程序只有在它們全部啓動並運行之後才能部署。 所以我想要做的是創建一個「邏輯部署單元」,它是應用程序的所有必需組件,並在單個操作中進行部署。 由於上述可擴展性的原因,我不希望僅限於單個主機。 –

+0

如果你把所有yaml文件放到一個目錄中,你可以用一個命令創建所有的應用程序資源('kubectl create -f

')。我們不會在教程中這樣做,因爲最好先查看每個yaml文件的獨立性,但這是我們如何運行guestbook應用程序的端到端測試(請參閱https://github.com /GoogleCloudPlatform/kubernetes/blob/master/test/e2e/kubectl.go#L134)。 –

+0

這傢伙並沒有提到任何關於微服務的事情。奇怪的接受答案;) – mhstnsc