全部產品
Search
文件中心

Container Service for Kubernetes:配置叢集的Auto Scaling

更新時間:Sep 19, 2025

ACK Serverless叢集基於阿里雲Elastic Container Instance服務提供了強大的Auto Scaling能力。依照制定的策略,ACK Serverless叢集的算力可以在短時間內增長數倍,或在算力需求回落時快速縮容以節省成本。本文介紹如何直接控制叢集中的Pod數量或配置基於負載的自動調整策略。

重要

完成本教程預計產生0.5 USD左右的費用(假設資源運行0.5 小時)。請在完成教程後及時釋放資源。

前提條件

已參考快速部署基於Nginx的Web應用完成Web應用的部署。

步驟一:安裝metrics-server組件

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,單擊組件管理

  3. 單擊上方的日誌與監控頁簽,找到名為metrics-server的卡片,單擊右下方的安裝,並等待安裝完成。

步驟二:實現應用擴縮容

控制台

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 無狀態

  3. 單擊名稱為“nginx-deploy”的無狀態應用,進入應用詳細資料頁面。

  4. 單擊右上方的伸縮,在伸縮面板中將所需容器組數量修改為10,然後單擊確定

    重新整理頁面後,可以觀察到9個新的Pod被建立,表示擴容成功。

  5. 重複步驟4,將Pod數量修改為1。

    重新整理頁面後,可以觀察到Pod數量回落至1個,表示縮容成功。

kubectl

  1. 執行以下命令,查看應用的詳細資料。

    kubectl get deploy

    預期輸出:

    NAME           READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deploy   1/1     1            1           9m32s
  2. 執行以下命令,將應用內的Pod擴容到10個。

    kubectl scale deploy nginx-deploy --replicas=10

    預期輸出:

    deployment.extensions/nginx-deploy scaled
  3. 執行以下命令,查看Pod。

    kubectl get pod

    預期輸出:

    NAME                            READY   STATUS    RESTARTS   AGE
    nginx-deploy-55d8dcf755-8jlz2   1/1     Running   0          39s
    nginx-deploy-55d8dcf755-9jbzk   1/1     Running   0          39s
    nginx-deploy-55d8dcf755-bqhcz   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-bxk8n   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-cn6x9   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-jsqjn   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-lhp8l   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-r2clb   1/1     Running   0          38s
    nginx-deploy-55d8dcf755-rchhq   1/1     Running   0          10m
    nginx-deploy-55d8dcf755-xspnt   1/1     Running   0          38s
  4. 執行以下命令,將應用內的Pod縮容到1個。

    kubectl scale deploy nginx-deploy --replicas=1

    預期輸出:

    deployment.extensions/nginx-deploy scaled
  5. 執行以下命令,查看Pod。

    kubectl get pod

    預期輸出:

    NAME                            READY   STATUS    RESTARTS   AGE
    nginx-deploy-55d8dcf755-bqhcz   1/1     Running   0          1m

步驟三:配置基於負載的自動調整

控制台

  1. 在應用詳情頁面,單擊容器伸縮頁簽。

  2. 單擊指標伸縮(HPA)處對應的建立

  3. 建立面板中填入以下樣本值,然後單擊確定

    配置項

    樣本值

    名稱

    nginx-deploy

    指標

    單擊添加,然後填入以下指標:

    • 監控項:CPU使用量

    • 閾值:20%

    最大容器數量

    10

    最小容器數量

    1

kubectl

  1. 建立一個新的指標伸縮策略。

    執行此策略時,應用中至少有1個Pod,至多有10個Pod,而應用會通過伸縮的方式儘可能將容器的平均CPU佔用保持在20%左右。

    kubectl autoscale deployment nginx-deploy --cpu-percent=20 --min=1 --max=10

    預期輸出:

    horizontalpodautoscaler.autoscaling/nginx-deploy autoscaled
  2. 查看指標伸縮策略的資訊。

    kubectl get hpa

    預期輸出:

    NAME           REFERENCE                 TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    nginx-deploy   Deployment/nginx-deploy   0%/20%    1         10        1          35s

步驟四(可選):測試自動調整策略

可通過向叢集內的容器增加負載以觀察自動調整策略的表現。請參考以下步驟為容器增加負載。

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇工作負載 > 容器組

  3. 容器組頁面,單擊測試容器右側操作列中的終端,選擇測試容器進入命令列頁面。

  4. 以下命令會使容器運行一個無限迴圈,使CPU負載提升到最大。請選擇測試容器執行,否則可能對業務有損。

    while : ; do : ; done
  5. 返回控制台,在第一個容器組的監控列,單擊監控表徵圖,觀察容器的CPU負載。

  6. 等待幾分鐘,重新整理頁面,可以看到已建立4個新的Pod。

    此時,一個Pod的CPU負載達到100%,而其餘4個Pod的CPU負載約為0%。此時,本應用中所有Pod的平均CPU負載達到了約20%,叢集擴容完成,進入穩定點。

  7. 回到第3步中開啟的容器終端頁面,輸入Ctrl+C結束迴圈,使得容器CPU負載迴歸正常。

    說明

    如關閉了之前開啟的容器終端頁面,可使用top命令查看進程,並使用kill -9 <PID>命令結束CPU負載達到100%的進程。

  8. 再次返回控制台,等待5-10分鐘後重新整理頁面,觀察Pod數量回落至1個。

步驟五:釋放資源

如果無需繼續使用叢集,請按照以下操作釋放資源:

刪除已建立的應用和服務

  1. Container Service管理主控台叢集列表頁面,單擊目的地組群名稱。

  2. 在左側導覽列選擇工作負載 > 無狀態,然後選中已建立的Nginx應用,單擊大量刪除,並按介面提示完成後續確認操作。

刪除叢集

ACK Serverless叢集目前不收取叢集管理費用,但在使用ACK Serverless叢集過程中用到的其他阿里雲雲產品資源(如ECI),您需要按照各雲產品規定的計費規則,為您使用的資源付費,費用由各雲產品收取。完成教程後,請參考以下情境處理叢集:

  • 如果不再繼續使用叢集,請在Container Service管理主控台叢集列表頁面,找到目的地組群並單擊對應的更多 > 刪除,在彈出面板閱讀提示資訊,選中要同時刪除的相關雲產品資源,然後單擊刪除,並按頁面提示完成後續操作。更多資訊,請參見刪除叢集

  • 如果需要繼續使用叢集,請及時為阿里雲帳號儲值,確保餘額充足。如需瞭解使用ACK Serverless叢集Pro版過程中用到的其他阿里雲雲產品資源的計費資訊,請參見雲產品資源計費