全部產品
Search
文件中心

Container Service for Kubernetes:ACK叢集節點初始化流程介紹

更新時間:Sep 19, 2025

ACK提供穩定、高效、可預測的節點管理能力。無論是建立新節點還是對已有節點池進行擴容,ACK都遵循一套標準化的初始化流程,按照節點池的配置完成軟體安裝和配置,加入到Kubernetes叢集中。

適用範圍

叢集版本為1.20及以上的ACK託管叢集ACK專有叢集中的ECS節點池和EGS節點池。

流程概覽

步驟一:建立節點

收到擴容或自動添加節點的請求後,ACK將根據節點池配置(如執行個體規格、鏡像、磁碟等)建立雲端服務器執行個體(ECS或EGS),並由作業系統完成基礎的初始化工作,如配置網路、掛載系統硬碟等。

接下來,Cloud-init工具將執行User Data指令碼。該指令碼由執行個體預自訂資料、ACK初始化指令碼以及執行個體自訂資料組成。

步驟二:執行預自訂指令碼

Cloud-init會先執行執行個體預自訂資料中的預自訂資料。該資料通常用於安裝特定的系統依賴包或監控Agent、執行前置的環境檢查或配置。

步驟三:執行ACK初始化指令碼

本階段包含多個子步驟,並提供了靈活的跳過機制以滿足不同情境的需求。

3.1 準備基礎環境

此階段為節點配置Kubernetes運行所需的基礎環境。

執行流程

  • 啟動chronyd服務:確保節點與NTP伺服器時間同步。

  • 設定Node ID與Hostname:

    • Node ID:計算並設定一個 Kubernetes 叢集中的節點 ID。

    • Hostname:節點池配置了自訂節點名稱時,還會將該名稱設定為節點的 Hostname。

  • 資料盤初始化:如果節點池配置了資料盤,系統預設會按照字典序尋找最後一塊資料盤(優先使用NVMe),進行格式化並掛載,用於存放容器運行時環境(如containerd的工作目錄/var/lib/containerd)。

跳過機制

  • 如需手動管理資料盤分區和檔案系統,或使用已包含資料的存量資料盤,可在預自訂資料中建立檔案 /var/.skip-auto-fdisk 以跳過自動格式化。

  • 若不跳過自動格式化,希望保留並遷移原運行時目錄下的資料(如鏡像緩衝),可建立檔案 /var/.keep-container-data。系統會在掛載資料盤後,將舊資料拷貝至新目錄,避免鏡像的重複拉取。

3.2 安裝 Kubernetes 組件

此階段安裝運行Kubernetes所需的核心組件。

3.3 按需安裝組件

根據節點池的配置,ACK 會按需安裝相應組件。

  • 安裝異構硬體驅動和device-plugin:如節點為GPU或NPU等異構計算執行個體,系統會自動安裝相應的驅動程式和Kubernetes裝置外掛程式NVIDIA Device Plugin,使叢集能夠識別和調度這些資源。

  • 安裝鏡像加速軟體:若啟用了使用按需載入容器鏡像加速容器啟動等功能,系統會安裝相關加速軟體並相應地修改容器運行時配置,以提升容器啟動速度。

  • 安裝SGX相關軟體:若啟用了ACK-TEE機密計算,系統會安裝SGX驅動和相關依賴,為運行機密容器提供可信執行環境。

3.4 加入叢集

完成核心組件安裝後,kubelet 啟動並向叢集 API Server 進行註冊。註冊後,節點被正式加入到叢集中,其初始狀態被標記為 NotReady

3.5 額外安裝基礎軟體

為保證節點的穩定和安全,ACK會預設安裝一些額外的基礎軟體包並進行安全更新。

執行流程

  • 安裝基礎工具包:安裝pigzcontainer-selinuxzlib等常用工具,以支援儲存、網路等進階功能。

  • 安全更新(僅針對Alibaba Cloud Linux):

    • 按需升級systemd:為保證穩定性和功能,可能會升級systemd版本。

    • 執行minimal安全性漏洞修複:通過yum update-minimal --exclude kernel* --security -y自動執行CVE安全性漏洞修複。

跳過機制

  • 建立 /var/.skip-yum 檔案可完全跳過此步驟(包括 CVE 修複),適用於離線環境或需要嚴格版本控制的情境。

  • 建立 /var/.skip-security-fix 檔案可僅跳過 CVE 漏洞修複,但仍會安裝基礎工具包。

3.6 應用節點池OS配置

在所有軟體安裝和更新完成後,系統會再次應用節點池的OS配置,以確保所有設定在最終環境中依然生效。配置詳情請參見管理節點池OS參數

3.7 按需執行安全強化

根據節點池配置的安全強化能力(阿里雲OS加固),系統會執行相應的安全強化指令碼,例如固化核心參數、收斂系統許可權等,以滿足企業安全規範。

步驟四:執行自訂指令碼

此時開始執行執行個體自訂資料。該指令碼通常用於執行應用程式層面的初始化操作,例如初始化應用資料目錄、啟動非容器化的輔助服務等。

並存執行流程

狀態變更( NotReady 變為 Ready

節點加入叢集並處於 NotReady 狀態後,節點的kubelet會與控制面持續通訊。當節點上的關鍵組件準備就緒,且節點通過所有健全狀態檢查後,其狀態會自動更新為 Ready,被Kubernetes調度器視為可用資源,開始接收並運行Pod。

並行機制說明

節點狀態變更與執行個體自訂資料的執行為並行任務。

  • 互不阻塞:執行個體自訂資料的執行與節點變為Ready狀態的過程相互獨立,即此指令碼的執行結果(成功、失敗或耗時)不會阻塞節點狀態變為 Ready

  • 執行時序:兩者並存執行,不能假定執行個體自訂資料執行完成時,節點上已經有應用Pod在運行;反之亦然。

  • 日誌追蹤:如需確認自訂指令碼的執行情況,可登入節點,通過 cat /var/log/cloud-init-output.log 來查看其執行日誌和最終狀態。