2015-06-20 92 views
1

使用Kubernetes來管理Docker容器時,特別是在使用複製控制器時,何時應該將運行容器實例的映像增加到1以上?我知道Kubernetes可以根據需要在複製控制器配置文件中產生儘可能多的容器副本,但是當您只需增加Compute VM大小時,爲什麼會產生多個正在運行的容器(對於相同的映像)。我認爲,當你需要更多的計算能力時,繼續增加機器CPU /內存,然後才能達到允許的最大可用計算能力,目前在Google上有大約32個內核,那麼你需要產生多個容器。但是,似乎產生多個容器(無論VM大小如何)都會證明更高的可用性服務,但即使在1個容器複製控制器環境中,Kubernetes也將重新生成容器失敗。所以我無法弄清楚,出於什麼原因,我希望超過1個正在運行的容器(對於相同的映像),除了虛擬機實例計算大小不足之外呢?什麼時候應該使用Kubernetes複製控制器創建多個Docker容器圖像實例?

回答

2

我想你已經解決了相當不錯的問題。您所描述的兩種縮放稱爲「垂直縮放」(增加單個實例的內存或CPU)和「水平縮放」(增加實例數量)。

可用性:正如您所看到的,即使使用單個容器,由於自動重新啓動(在節點級別或複製控制器級別),您仍可以實現相當好的可用性。但它永遠不可能是100%,因爲無論是在同一臺機器上,還是在新機器上(如果機器發生故障),您都會遇到與重新啓動進程相關的停機時間。相比之下,假設在副本之間存在某種負載平衡或故障轉移機制,並且您的應用程序被寫入了一個區域,則水平伸縮(運行容器的多個副本)可以有效地從最終用戶的角度「實現零停機時間」允許複製的方式。

關於可伸縮性:這是高度依賴於應用程序的。例如,對於單線程應用程序垂直擴展CPU不會增加它可以處理的工作負載,但會在負載平衡器後面運行多個副本(水平縮放)。另一方面,有些應用程序不是以允許複製的方式編寫的,因此對於那些垂直縮放是唯一的選擇。許多應用程序(特別是「雲原生」應用程序)適合水平和垂直縮放,但細節取決於應用程序。請注意,一旦您需要擴展單個節點可以處理的工作負載(由於CPU或內存),您只能複製(水平縮放)。

因此,您的問題的簡短答案是人們複製可用性和可伸縮性。

相關問題