全部產品
Search
文件中心

Container Service for Kubernetes:通過資料盤快照加速ACK節點擴容

更新時間:Nov 28, 2025

在AI、巨量資料等需要頻繁擴容的業務情境中,新節點加入叢集時,拉取組件和業務鏡像會消耗大量時間。為提升節點就緒速度,可將組件、鏡像等預先緩衝至資料盤快照,使新節點可以從本地磁碟直接載入資料,從而提升擴容效率。

工作原理

預設擴容流程中,從建立節點到業務應用在其上成功運行,其耗時主要集中在以下受網路影響的階段:

  • 系統鏡像拉取:容器運行時(containerd)需要拉取系統Pod所需的鏡像,如Terway、kube-proxy等。

  • 業務鏡像拉取:節點就緒後,業務Pod被調度到該節點,容器運行時需要拉取業務應用的容器鏡像。

當節點池使用資料盤快照擴容時,上述“網路拉取”過程會轉為“本地載入”:

  • 加速節點就緒:初始化指令碼會優先檢查本地路徑。由於快照預置了系統鏡像,節點可跳過下載和拉取過程,儘快進入就緒狀態。

  • 加速業務啟動:由於快照中已預先緩衝業務鏡像,當Pod被調度到新節點時,容器運行時可在本地找到所需鏡像,實現業務的快速啟動。

步驟一:準備用於建立快照的節點

建立一個包含ACK核心組件與業務鏡像的ECS執行個體,並為其資料盤建立快照。

  1. 準備用於製作快照的ECS執行個體。

    1. 在叢集中建立一個節點池,其核心配置如下。在此過程中,ACK會自動將Terway、kube-proxy等系統組件鏡像儲存至資料盤。

      • 登入方式:配置金鑰組或密碼,以便後續登入執行個體。

      • 期望節點數:設定為1。

      • 資料盤:至少添加一塊資料盤。

        如已通過白名單申請初始化設定功能,需選擇格式化,且作為容器運行時佔用目錄,以便將容器運行時環境預置到資料盤中。

    2. 等待節點就緒後,將建立的節點從叢集中移除。移除時,ECS執行個體仍需保留,請勿勾選同時釋放 ECS

  2. 登入保留的ECS執行個體,將所需的組件和鏡像檔案手動添加到資料盤中。

    1. 登入ECS執行個體,執行lsblk -f命令,查看資料盤掛載路徑,如/var/lib/container

    2. 緩衝kubelet組件。

      1. 進入資料盤掛載目錄,建立用於存放ACK組件的緩衝目錄。

        cd /var/lib/container
        mkdir -p ack
      2. 設定地區和叢集版本環境變數。

        # 樣本以 cn-shanghai 地區和 1.34.1-aliyun.1 版本為例,請按實際情況替換
        export REGION="cn-shanghai"
        export KUBE_VERSION="1.34.1-aliyun.1"
      3. 下載、解壓並移動kubelet二進位檔案至緩衝目錄。

        wget http://aliacs-k8s-$REGION.oss-$REGION-internal.aliyuncs.com/public/pkg/kubernetes/kubernetes-$KUBE_VERSION-linux-amd64.tar.gz
        tar -xvf kubernetes-$KUBE_VERSION-linux-amd64.tar.gz
        mv pkg/kubernetes /var/lib/container/ack/
      4. 清理下載的臨時檔案,保持快照精簡。

        rm kubernetes-$KUBE_VERSION-linux-amd64.tar.gz
        rm -rf pkg
  3. (可選) 緩衝業務鏡像。

    將業務中頻繁使用的鏡像拉取到本地。這些鏡像也將被包含在快照中,從而加速業務Pod的啟動。

    # 如果環境中有 Docker,也可使用 docker pull
    # 樣本以 Nginx 鏡像為例
    crictl pull anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

步驟二:建立資料盤快照

將已完成組件和鏡像緩衝的資料盤建立為快照,供後續節點池擴容時複用。

  1. 訪問ECS控制台-執行個體,將目標執行個體設定為停止狀態。

    關於停止執行個體的配置說明,請參見停止執行個體(普通停機)
  2. 執行個體已停止後,進入執行個體詳情頁,單擊Block Storage頁簽。

  3. 找到作為容器運行時目錄的資料盤,在其操作列,單擊建立快照,按照頁面提示完成快照的配置。

    關於快照的配置說明,請參見建立快照

步驟三:使用快照擴容節點並驗證結果

  1. 建立一個節點池,應用此前建立的快照。核心配置如下:

    • 作業系統:按需選擇作業系統。

      暫不支援ContainerOS3.5及以上版本。
    • 期望節點數:設定為1及以上。

    • 資料盤

      • 選擇用資料盤快照,按照頁面提示選擇此前建立的快照。

      • 如已通過白名單申請初始化設定功能,需選擇格式化,且作為容器運行時佔用目錄(此格式化流程會保留快照中的資料)。

    • 執行個體自訂資料對於非ContainerOS作業系統,添加以下指令碼以跳過yum更新,加快節點初始化速度。

      touch /var/.skip-yum
  2. 等待新節點就緒後,登入節點,檢查緩衝是否已成功生效。

    1. 檢查鏡像緩衝是否生效。

      查看kubelet日誌,若已緩衝的鏡像未出現拉取記錄,則表明緩衝生效。

      # 若該命令無輸出,或輸出中不包含預置鏡像(如 Terway、kube-proxy)的拉取記錄,則證明緩衝生效。
      journalctl -u kubelet | grep "pulled image"
    2. 檢查kubelet緩衝是否生效。

      查看ack-deploy日誌,未出現check cached kubernetes failed即表示成功。

      # 如果該命令無輸出,表明緩衝的 kubelet 被成功使用
      cat /var/log/ack-deploy.log |grep "check cached kubernetes failed"

計費說明

製作快照的臨時ECS執行個體、其掛載的雲端硬碟以及最終產生的快照,均會產生對應計費

請在操作完成後及時釋放臨時ECS執行個體,定期管理快照生命週期,刪除不再使用的快照以節省成本。

常見問題

如果叢集升級了版本,原來的快照還能用嗎?

不推薦繼續使用。快照中緩衝的kubelet版本可能與新叢集版本不相容,會導致節點無法正常註冊。叢集升級後,建議重新製作資料盤快照。

除了kubelet和容器鏡像,還能緩衝其他檔案嗎?

可以。任何存放在該資料盤路徑下的檔案都會被包含在快照中。請根據業務需求緩衝其他依賴檔案(如設定檔、資料模型等),但需注意管理快照的大小和內容的合規性。

相關文檔

節點初始化流程