Kubernetes的設計初衷是要解決管理大規模容器化環境時的困難。不過,這並不意味着Kubernetes在任何的環境下均可以進行擴展。有一些方法可讓用戶最大限度地發揮Kubernetes的擴展能力,而在擴展Kubernetes時,有一些重要事項和限制須要注意,本文中我將對這些內容進行說明。性能
擴展Kubernetes集羣,首先要注意的就是規模和性能之間的平衡。好比,Kubernetes 1.6可被用於多達5000個節點的集羣。不過5000個節點並非硬性限制的最大值,它只是一個推薦的節點最大值。在實際使用中,節點數能夠遠超過5000個,只是這樣會致使性能降低罷了。設計
這個問題具體來講是這樣的:Kubernetes有兩個服務層級的目標,一個是在一秒內返回99%的API調用。另外一個是在5秒內啓動99%的pods。儘管這些目標並非完整的一套性能指標,但它們確實爲評估通用集羣性能提供了良好的基準。而據Kubernetes所說,超過5000個節點的集羣可能沒法實現這些服務層級的目標。內存
因此有一點請你們注意,在有些時候,爲了發揮Kubernetes的擴展性,你有可能不得不犧牲一部分的性能,這些犧牲對你來講既多是值得的,也多是不值得的,而這取決於你具體的部署場景。資源
在創建很是大規模的Kubernetes集羣時,你可能會遇到的一個主要問題就是配額問題。對於基於雲的節點尤其如此,由於雲服務提供商一般狀況下會設置配額限制。部署
這個問題之因此如此重要,是由於部署大規模的Kubernetes集羣其實是一個看似簡單的過程。config-default.sh文件有NUM_NODES的設置。表面上,你能夠經過加大與此設置相關聯的值來構建大規模集羣。雖然這在某些狀況下可行,但最終也可能會遭遇到配額問題。所以,在你打算擴展集羣以前,頗有必要就現有的任何配額先和雲供應商進行溝通。雲供應商不只可讓你瞭解現有配額的狀況,並且至少一部分雲供應商會贊成用戶增長配額限制的請求。虛擬機
當你在評估這些限制的時候,須要注意,儘管配額限制會直接限制你建立Kubernetes集羣的數量,然而集羣大小的限制更可能是出自與Kubernetes間接相關的配額。例如,提供商可能會限制容許你使用的IP地址數量,或者限制你建立的虛擬機實例數量。而好消息是,主要的幾個雲服務商已經有屢次和Kubernetes打交道的經驗,應該可以幫助你解決這些問題。集羣
除了上述的限制外,還須要考慮的一個問題是集羣大小對所需的主節點大小和數量的影響。這些取決於Kubernetes的實現方式,不過要記住的一點是,集羣越大,所需的主節點數量也越多,而那些主節點的功能需求也就越高。容器
若是你正在從頭構建新的Kubernetes集羣,這多是一個無關的問題,畢竟肯定須要的主節點數量是集羣規劃過程當中的正常階段。但是若是你打算擴展示有Kubernetes集羣,那麼你更須要去多加考慮主節點的需求,由於在集羣啓動時主節點的大小就已經設置好了,並且不可以動態調整。擴展
另外一件須要咱們注意的是,Kubernetes定義了附加組件容器的資源限制。這些資源限制可確保附加組件不會消耗過多的CPU和內存資源。雲服務
這些有關限制的問題是,它們是基於相對較小的集羣進行定義的。若是你在大規模集羣中運行某些附加組件,它們可能會須要超額使用更多的資源。這是由於附加組件必須服務更多的節點,也所以須要額外的資源。若是開始出現與組件相關限制的問題,那麼你就會看到附加組件一個一個地被kill掉。
Kubernetes集羣能夠大規模擴展,但可能會遇到與配額和性能相關的問題。所以,在向Kubernetes集羣添加大量新節點以前,請必定要仔細考慮橫向擴展所出現的各類需求。