使用Kubernetes來管理Docker容器時,特別是在使用複製控制器時,何時應該將運行容器實例的映像增加到1以上?我知道Kubernetes可以根據需要在複製控制器配置文件中產生儘可能多的容器副本,但是當您只需增加Compute VM大小時,爲什麼會產生多個正在運行的容器(對於相同的映像)。我認爲,當你需要更多的計算能力時,繼續增加機器CPU /內存,然後才能達到允許的最大可用計算能力,目前在Google上有大約32個內核,那麼你需要產生多個容器。但是,似乎產生多個容器(無論VM大小如何)都會證明更高的可用性服務,但即使在1個容器複製控制器環境中,Kubernetes也將重新生成容器失敗。所以我無法弄清楚,出於什麼原因,我希望超過1個正在運行的容器(對於相同的映像),除了虛擬機實例計算大小不足之外呢?什麼時候應該使用Kubernetes複製控制器創建多個Docker容器圖像實例?
1
A
回答
2
我想你已經解決了相當不錯的問題。您所描述的兩種縮放稱爲「垂直縮放」(增加單個實例的內存或CPU)和「水平縮放」(增加實例數量)。
可用性:正如您所看到的,即使使用單個容器,由於自動重新啓動(在節點級別或複製控制器級別),您仍可以實現相當好的可用性。但它永遠不可能是100%,因爲無論是在同一臺機器上,還是在新機器上(如果機器發生故障),您都會遇到與重新啓動進程相關的停機時間。相比之下,假設在副本之間存在某種負載平衡或故障轉移機制,並且您的應用程序被寫入了一個區域,則水平伸縮(運行容器的多個副本)可以有效地從最終用戶的角度「實現零停機時間」允許複製的方式。
關於可伸縮性:這是高度依賴於應用程序的。例如,對於單線程應用程序垂直擴展CPU不會增加它可以處理的工作負載,但會在負載平衡器後面運行多個副本(水平縮放)。另一方面,有些應用程序不是以允許複製的方式編寫的,因此對於那些垂直縮放是唯一的選擇。許多應用程序(特別是「雲原生」應用程序)適合水平和垂直縮放,但細節取決於應用程序。請注意,一旦您需要擴展單個節點可以處理的工作負載(由於CPU或內存),您只能複製(水平縮放)。
因此,您的問題的簡短答案是人們複製可用性和可伸縮性。
2
爲什麼要向上或向下縮放應用程序有多種原因。
Kubernetes項目正在尋求在將來提供自動擴展功能,作爲動態調整複製控制器的大小並縮小其大小(可能爲0)以響應觀察到的流量。有關自動縮放的很好的討論,請參閱以下文章:
https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/proposals/autoscaling.md
相關問題
- 1. 什麼時候會創建一個控制器的實例?
- 2. 什麼時候應該在mvc中使用多個控制器?
- 3. 控制器什麼時候應該實例化?
- 4. 什麼時候應該使用ASP.NET MVC創建單獨的控制器?
- 5. 什麼時候應該在ASP.NET MVC中創建一個新的控制器類?
- 6. kubernetes複製控制器
- 7. Kubernetes:多服務/複製控制器
- 8. 什麼時候應該使用SOLR的多個實例?
- 9. 什麼時候應該使用視圖控制器的addSubview方法?
- 10. 什麼時候應該使用initWithNibName初始化視圖控制器?
- 11. 我應該使用什麼控制器?
- 12. 創建多個Docker容器
- 13. 哪裏應該在web api控制器中創建實例
- 14. 你應該在MVC中命名你的控制器?你應該什麼時候創建一個新的?
- 15. 什麼時候Zend_Controller_Request_Http不是控制器
- 16. 你什麼時候需要使用視圖控制器?
- 17. 對於什麼控制我應該使用MD-輸入容器
- 18. 什麼時候應該在ASP.NET MVC中使用異步控制器?
- 19. 什麼時候應該在asp.net mvc 2中使用異步控制器?
- 20. 什麼時候應該使用尺寸控制(windows窗體)?
- 21. 什麼時候應該在我的應用程序中使用多個控制器?
- 22. 在控制器中創建HtmlHelper實例
- 23. 視圖控制器應該在視圖中應該是什麼?
- 24. 是否有可能用Docker複製Kubernetes容器網絡環境?
- 25. 什麼時候創建Enum實例?
- 26. ios5故事板:在一個容器視圖控制器中實例化多個視圖控制器
- 27. Kubernetes複製控制器在CrashLoopBackOff狀態
- 28. Kubernetes卷安裝與複製控制器
- 29. Kubernetes複製控制器調度
- 30. 創建相同控制器的角度多個實例