天天看點

通過ACK 節點池高效管理Kubernetes節點——功能介紹

前言

雲原生,被認為是釋放雲原生紅利的最短路徑,而以kubernetes 已成為雲原生技術領域的事實标準。基于kubernetes建構的容器應用平台和過去基于虛機平台最大的不同,就是kubernetes屏蔽了底層環境的複雜和不一緻,幫助研發通過應用的視角管理業務。 如何統一異構資源,高效地管理資源,利用雲上彈性能力應對峰值流量與節省成本,每位kubernetes 運維人員都将面臨的挑戰。

ACK 團隊推出節點池功能,通過節點池視角分組管理,幫助使用者更加高效地管理Kubernetes 叢集節點。

目錄

節點池系列将分為幾部分介紹ACK Kubernetes 節點池功能和特性

  • 通過ACK 節點池高效管理Kubernetes節點——功能介紹
  • 通過ACK 節點池高效管理Kubernetes節點——多場景支援:通過節點池管理邊緣,混合雲叢集節點
  • 通過ACK 節點池高效管理Kubernetes節點——降低成本:自動彈性伸縮與搶占執行個體
  • 通過ACK 節點池高效管理Kubernetes節點——托管節點池:無人工介入的節點自愈恢複托管節點池——節點自愈恢複
  • 通過ACK 節點池高效管理Kubernetes節點——托管節點池:設定維護視窗與自動更新

什麼是節點池

節點池,顧名思義,通過池話的方式,一個節點池代表一組具有相同特性和配置的節點。 使用者可以通過節點池為節點分組管理,批量操作,動态伸縮。

通過ACK 節點池高效管理Kubernetes節點——功能介紹

面臨挑戰

Kubernetes 本質是一個分布式作業系統,分布式環境本身充滿了不确定性,在雲上運維一個大規模kubernetes叢集節點,會面臨以下挑戰:

  • 管理成本:當Kubernetes 叢集規模擴張,節點數随之增長,雖然有terraform 之類的工具可以幫助我們自動化管理,但是當面臨成千上萬的節點,點對點操作會給運維人員帶來極大的運維和管理成本。
  • 節點配置複雜度:随着越來越多種類業務逐漸運作在kubernetes ,針對不同類型業務,節點的配置要求也不盡相同,一個節點涉及資源配置(節點規模,交換機,資源組等)和軟體配置(kubelet 參數,自定義配置腳本,運作時等)有20多項,每一次擴容都面對複雜的表單,既不穩定也不高效。
  • 運維效率:得利于容器的标準化環境和雲上按需付費,近似無限的資源池相結合,通過彈性能力我們能夠為業務按需擴容和縮容叢集節點,降本成效。而彈性能力是否能夠充分發揮作用,彈性效率是決定因素。
  • 擴容成功率:當彈性成為常态,節點的運維操作(擴容,縮容,排水,更新)是否足夠穩定,随着規模增加,任何單次操作的不穩定都會随着節點規模成指數增長。

設計目标

節點分組化管理運維,提高管理效率

節點管理的挑戰,本質上是我們如何在有限範圍内,應對被管理對象的多樣性(節點配置不同)和數量(節點規模增長)變化帶來的管理成本。 多樣性的增長會給管理者帶來複雜度的提升,而數量增長會加劇複雜度墒增,并影響管理者指令的執行效率。

“計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決”,而節點池就是在叢集和節點之間的抽象中間層。

通過建立多個節點池來描述叢集内異構節點的多樣性,在節點池分布中,可以清晰看到叢集中有哪些類型的節點以及數量分布。管理者無需關心具體節點執行個體的配置,隻需關注叢集中有限的節點池,通過節點池的數量調整實作節點的增減。進行基本節點操作(擴縮容,更新,編輯,删除)時,基于節點池進行操作下發比直接下發節點更加友善。

通過ACK 節點池高效管理Kubernetes節點——功能介紹

除了基本操作,管理者可以根據業務需求劃分為不同節點池,給不同節點池中的節點打上label和taint,部署應用時通過nodeSelector和toleration 實作應用指定節點池部署。

通過ACK 節點池高效管理Kubernetes節點——功能介紹

節點配置模闆化,降低配置複雜度

随着雲上容器化業務逐漸複雜,為了支撐好多種業務場景,節點配置也越來越多,在ACK中擴容一個節點包含20多個配置項。 由于節點池抽象描述了一組同構節點的配置。

節點池配置:

  • 資源配置
    • 付費類型
    • 交換機
    • 執行個體規格
    • 資料盤
    • 作業系統
    • 登陸方式,密碼 / 密鑰對
    • ...
  • 軟體配置
    • 容器運作時
    • Labels
    • Taints
    • 雲監控插件安裝
    • 自定義kubelet 參數
    • ....

将節點涉及的資源層和軟體層配置通過節點池的中繼資料模闆化,在建立節點池時填寫相關的配置項,後續擴容節點時隻需指定對應的節點池并輸入擴容數量即可,無需重複填寫對應的節點配置内容。

節點伸縮能力優化

此外相比過去直接操作節點,節點池對節點的伸縮操作做了許多優化。

  • 內建雲産品服務,ACK将節點伸縮建立內建了彈性伸縮服務(ESS)。
    • 支援選擇多種規格,當某規格庫存不足建立失敗時可自動重試其他規格。
    • 支援多可用區,實作多可用區均衡分布
  • 優化管控測的批量查詢和操作效率,一個完整節點伸縮所耗時間壓縮到3分鐘。極速模式
  • 配置模闆化,減少了伸縮過程中對配置項逐一校驗的時間開銷
通過ACK 節點池高效管理Kubernetes節點——功能介紹

總結

ACK通過引入節點池,作為叢集與節點之間的抽象,提供分組管理和運維的能力,通過節點池管理節點有以下優勢:

  • 分組管理,面對大規模叢集節點時提高管理效率
  • 配置模闆化,無需每次擴容時重複填寫配置
  • 支援批量管理labels和taint,應用指定分組排程
  • 內建ess 優化擴縮容的運作效率和成功率。

同時,除了雲上ESS以外,通過節點池能夠擴充更多場景的節點類型,例如雲上自動彈性,邊緣節點,混合雲線下彈線上等等,會在接下來的系列中詳細介紹。