ContainerOS是為容器情境垂直最佳化的阿里雲官方作業系統,完全相容現有的Kubernetes生態。ContainerOS對OS啟動速度、鏡像拉取時間等方面進行了最佳化,以提升ACK節點擴容速度和節點擴容體驗。本文介紹如何使用ContainerOS實現節點極速擴容。
索引
前提條件
已配置ContainerOS為託管節點池的作業系統。具體操作,請參見使用ContainerOS。
第一次基於ContainerOS建立託管節點池的情境下,已確保Kubernetes叢集的如下組件處於最新版本,以便更好地實現節點擴容效能。
建立叢集時使用的網路組件:Terway組件、Flannel組件
建立叢集時預設的儲存外掛程式:csi-plugin
您可以在目的地組群資訊頁面,選擇
,查看組件是否為最新版本。如果組件卡片右下方出現升級,請單擊升級完成組件升級。
注意事項
為提升啟動速度,ContainerOS採用預置鏡像的方式減少鏡像拉取時間。在使用過程中,請勿手動升級ACK相關組件(Terway或Flannel、csi-plugin),以免出現預置鏡像版本與應用版本不一致的情況,導致啟動耗時變長。
藉助於容器鏡像分層的特性,相較於拉取全新鏡像,ContainerOS更新鏡像的耗時更短,彈效能力更優。但仍然建議您提前完成相關組件升級,以獲得更好的節點擴容體驗。
ContainerOS擴容優勢
最佳化項 | 說明 |
OS啟動速度 | 通過簡化OS啟動流程,ContainerOS可以有效降低OS啟動時間。ContainerOS是雲上虛擬機器的作業系統,涉及到的硬體驅動較少,可以將必要的核心驅動模組修改為built-in模式。此外,ContainerOS去除initramfs,並顯著簡化udev規則,使得OS啟動速度大幅提升。以ecs.g7.large規格的ECS執行個體為例,Alibaba Cloud Linux 3初次開機時間為1分鐘以上,而ContainerOS僅需2秒左右。 |
鏡像拉取耗時 | ECS節點啟動完成後,需要拉取部分組件的容器鏡像,以在ACK情境下執行一些基礎性的工作。通過預置叢集管控必備組件的容器鏡像,ContainerOS可以減少節點啟動過程中因鏡像拉取而帶來的耗時。 以Terway網路組件為例,節點需等待Terway組件的容器就緒後,才可以轉換為就緒狀態。網路拉取的長尾效應將帶來極大的耗時。為避免此問題,ContainerOS通過預置的方式提前將此組件提前安裝在OS內部,使得組件可以直接從本地目錄擷取,避免網路拉取鏡像耗時。 |
節點彈性效能 | 通過與ACK管控鏈路能力結合,ContainerOS可以有效提高節點彈性效能。 |
下圖統計了從空的ACK節點池擴容的端到端的P90耗時,計時從下發擴容請求開始,到90%的節點處於就緒狀態結束。相較於CentOS和Alibaba Cloud Linux 2自訂鏡像方案,ContainerOS效能優勢明顯。具體資料如下圖所示。
本樣本中提供的資料僅為理論值,實際資料可能會因產品功能最佳化略有偏差,請以您的作業環境為準。
操作步驟
如果您有同時啟動大量節點的業務情境,例如同時擴容超過100個ECS節點,您可以手動設定Kube Controller Manager、Kube Scheduler、APIServer三個最佳化項以提升節點擴容速度。
部分API預設支援的最大串連數為100,因此同時啟動少於100個ECS節點時無需額外配置。
Kube Controller Manager限流調整
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面的核心組件頁簽,定位到Kube Controller Manager,然後單擊卡片右下方的配置。
在參數配置對話方塊,配置kubeAPIQPS為800、kubeAPIBurst為1000(其餘選項按需配置),然後單擊確定。
說明基於測試資料,推薦您按照上方數值進行配置。如有其他需求,您也可以按照自身業務情境靈活配置。
Kube Scheduler限流調整
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面的核心組件頁簽,定位到Kube Scheduler,然後單擊卡片右下方的配置。
在參數配置對話方塊,配置connectionQPS為800、connectionBurst為1000(其餘選項按需配置),然後單擊確定。
說明基於測試資料,推薦您按照上方數值進行配置。如有其他需求,您也可以按照自身業務情境靈活配置。
APIServer數量調整
叢集內APIServer的副本數量根據負載進行Auto Scaling。如果同一時間彈出節點較多,APIServer會進行擴容,增加節點Ready的耗時。您可以提前提交工單,調整APIServer的副本數量,最佳化擴容效果。