插件簡介
autoscaler是Kubernetes中非常重要的一個Controller,它提供了微服務的彈性能力,并且和Serverless密切相關。
彈性伸縮是很好理解的一個概念,當微服務負載高(CPU/內存使用率過高)時水平擴容,增加pod的數量以降低負載,當負載降低時減少pod的數量,減少資源的消耗,通過這種方式使得微服務始終穩定在一個理想的狀態。
云容器引擎簡化了Kubernetes集群的創建、升級和手動擴縮容,而集群中應用的負載本身是會隨著時間動態變化的,為了更好的平衡資源使用率以及性能,kubernetes引入了autoscaler插件,它可以根據部署的應用所請求的資源量自動的動態的伸縮集群。
開源社區地址:
插件說明
autoscaler可分成擴容和縮容兩個方面:
- 自動擴容
當集群中的Pod由于工作節點資源不足而無法調度時,會觸發集群擴容,擴容節點與所在分組資源配額一致。詳情請參見創建節點伸縮策略。
當前該插件使用的是最小浪費策略,即若pod創建需要3核,此時有4核、8核兩種規格,優先創建規格為4核的節點。
說明:
自動擴容策略在滿足如下條件時才會執行:
- 節點上的資源不足。
- Pod的調度配置中不能包含節點親和的策略(即Pod若已經設置親和某個節點,則不會自動擴容節點),節點親和策略設置方法請參見節點親和性。
- 自動縮容
當集群節點處于一段時間空閑狀態時(默認10min),會觸發集群縮容操作(即節點會被自動刪除)。當節點存在以下幾種狀態的pod時,不可縮容:
? pod有設置PodDisruptionBudget,當移除pod不滿足對應條件時,節點不會縮容。
? pod由于一些限制,如親和、反親和等,無法調度到其他節點,節點不會縮容。
? pod擁有cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'這個annotations時,節點不縮容。
? 節點上存在kube-system namespace下的Pod(除kube-system daemonset創建的Pod),節點不縮容。
? 節點上有非controller(deployment/replica set/job/stateful set)創建的Pod,節點不縮容。
約束與限制
- 集群為1.9.7-r1及以上版本時,才支持此功能。
- 安裝時請確保有足夠的資源安裝本插件。
- 該插件功能僅支持通過按需計費方式購買的虛擬機節點。
安裝插件
步驟 1 登錄CCE控制臺,在左側導航欄中選擇“插件管理”,在“插件市場”頁簽下,單擊autoscaler插件下的“安裝插件”。
步驟 2 在安裝插件頁面,選擇您要安裝插件的集群和插件版本,單擊“下一步:規格配置”。
步驟 3 參照下表配置插件安裝參數。
表-autoscaler基本配置
參數 | 支持的插件版本 | 參數說明 |
插件規格 | 所有版本 | 插件部署可選擇“單實例”和“高可用”兩種規格。 單實例:以單實例部署插件。 高可用:以多實例部署插件,具有高可用能力,需占用更多的計算資源。 |
實例數 | 所有版本 | 選擇上方插件規格后,顯示插件中的實例數,此處僅作顯示。 |
容器 | 所有版本 | 選擇插件規格后,顯示插件容器的CPU和內存配額,此處僅作顯示。 |
登錄方式 | 部分版本無此參數 | 為自動擴容工作節點選擇登錄方式,當前支持“密碼”和“密鑰對”兩種方式,您可根據需要進行選擇。 選擇“密碼”方式: 密碼:自動擴容工作節點密碼。通過該密碼登錄工作節點執行相關操作,用戶名為root。 確認密碼:再次輸入自動擴容工作節點密碼。 選擇“密鑰對”方式: 密鑰對:密鑰對用于遠程登錄節點時的身份認證。 |
自動縮容 | 所有版本 | 默認不開啟:將不開啟自動縮容,只進行自動擴容。 開啟:開啟自動縮容,且自建節點和插件擴容所創建的節點均可縮容。 空置時間(min):當集群節點處于一段時間的空閑狀態時,會觸發集群縮容操作,刪除節點,默認10min。 百分比:當集群節點資源低于多少百分比時,進行集群縮容掃描(默認0.5,即50%,cpu和mem都要滿足的條件下才會縮容)。 擴容后縮容冷卻時間:擴容執行后能再次啟動縮容評估的時間間隔,默認10min。 節點刪除后縮容冷卻時間:刪除節點后能再次啟動縮容評估的時間間隔,默認10min。 縮容失敗后縮容冷卻時間:縮容失敗后能再次啟動縮容評估的時間間隔,默認3min。 空節點縮容最大并發數:默認10。 不可移除節點的重檢查時間:節點被判定不可移除后能再次啟動檢查的時間間隔,默認5min。 說明 當節點處于以下幾種狀態時,不可縮容: a、pod設置為PodDisruptionBudget,當不滿足條件時,節點不會縮容。 b、pod設置本地存儲時,節點不會縮容。 c、pod由于一些限制,如親和、反親和等,無法調度到其他節點,節點不會縮容。 d、pod擁有cluster-autoscaler.kubernetes.io/safe-to-evict: 'false'這個annotations時,節點不縮容。 e、節點上存在kube-system命名空間下的Pod(除kube-system daemonset創建的Pod)。 f、節點上有非controller(deployment/replica set/job/stateful set)創建的Pod。 |
預置節點池配置 | 部分版本無此參數 | 此為默認資源組。集群擴容時,若沒有其他可用分組,將使用默認分組的資源規格進行擴容節點。 單擊“添加預置節點池配置”進行參數設置: 可用區:選擇一個可用區。可用區是指在同一區域下,電力、網絡隔離的物理區域。 操作系統:選擇節點對應的操作系統。 Taints:可選項,默認為空。 支持給該節點池擴容出來的節點加Taints來設置反親和性,每個節點池最多配置10條Taints,每條Taints包含以下3個參數: ? Key:必須以字母或數字開頭,可以包含字母、數字、連字符、下劃線和點,最長63個字符;另外可以使用DNS子域作為前綴。 ? Value:必須以字母或數字開頭,可以包含字母、數字、連字符、下劃線和點,最長63個字符。 ? Effect:只可選NoSchedule,PreferNoSchedule或NoExecute。 須知: 1、Taints配置時需要配合Pod的toleration使用,否則可能導致擴容失敗或者Pod無法調度到擴容節點。 2、配置后無法修改,請您謹慎配置,錯誤的配置可能會導致擴容失敗或pod無法調度。 3、標簽管理:通過為資源添加標簽,可以對資源進行自定義標記,實現資源的分類。 說明 您可以在TMS中創建“預定義標簽”,預定義標簽對所有支持標簽功能的服務資源可見,通過使用預定義標簽可以提升標簽創建和遷移效率。 節點規格:節點的CPU配置和內存配置。 |
單擊下方的“高級設置”,可以配置更多插件參數:
參數 | 插件版本 | 參數說明 |
節點總數 | 所有版本 | 可擴容的最大節點總數。 |
cpu總數(核) | 所有版本 | 可擴容的最大cpu總數(核)。 |
內存總數(GB) | 所有版本 | 可擴容的最大內存總數(GB)。 |
自動擴容 | 部分版本無此參數 | 未調度實例擴容:默認選中。 啟用集群使用率擴容:可選,擴容能力增強。
|
磁盤 | 部分版本無此參數 | 系統盤和數據盤:設置節點磁盤空間。
勾選“資源分配自定義”后,您可以對數據盤中的Docker和Kubelet資源占比進行自定義設置。 須知
系統盤和數據盤均可提供以下性能規格的云硬盤:
|
命令行注入 | 部分版本無此參數 | 請輸入腳本命令。 說明:腳本命令大小限制:0~1000字符。 |
步驟 4 配置完成后,單擊“安裝”。
待插件安裝完成后,單擊“返回”,在“插件實例”頁簽下,選擇對應的集群,可查看到運行中的實例,這表明該插件已在當前集群的各節點中安裝。
升級插件
步驟 1 在CCE控制臺中,單擊左側導航欄的“插件管理”,在“插件實例”頁簽下,選擇對應的集群,單擊autoscaler下的“ 升級”。
說明:
- 如果升級按鈕處于凍結狀態,則說明當前插件版本是最新的版本,不需要進行升級操作;
- 若升級按鈕可單擊,則單擊升級按鈕即可升級autoscaler插件。
- 升級autoscaler插件時,會替換原先節點上的舊版本的autoscaler插件,安裝最新版本的autoscaler插件以實現功能的快速升級。
步驟 2 在彈出的窗口中,配置參數后,升級該插件。配置參數可參考安裝插件中的參數說明。
卸載插件
步驟 1 登錄CCE控制臺,在左側導航欄中選擇“插件管理”,在“插件實例”頁簽下,選擇對應的集群,單擊autoscaler下的“卸載”。
步驟 2 在彈出的窗口中,單擊“是”,可卸載該插件。