日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用容器水平伸縮(HPA)

如果您想基于CPU使用率、內存使用率或其他自定義指標實現Pod的自動擴縮,建議您為業務容器開啟水平伸縮HPA(Horizontal Pod Autoscaler)功能。HPA能夠在業務負載急劇飆升時快速擴容多個Pod副本來緩解壓力,也可以在業務負載變小時根據實際情況適當縮容以節省資源,無需您人為干預。HPA適用于服務波動較大、服務數量多且需要頻繁擴縮容的業務場景,例如電商服務、線上教育、金融服務等。

閱讀前提示

為了幫助您更好地使用HPA功能,建議您在閱讀本文前參見Kubernetes官方文檔Pod 水平自動擴縮了解HPA相關的基礎原理、算法細節、可配置的擴縮行為等等。

此外,ACK集群提供了多種工作負載伸縮(調度層彈性)和節點伸縮(資源層彈性)方案,建議您在使用本文檔前閱讀彈性伸縮概述,了解不同方案的適用場景、使用限制等。

前提條件

通過容器服務控制臺創建HPA應用

阿里云容器服務已經集成了HPA。您可以通過容器服務控制臺創建HPA應用。您可以在新建應用時候創建HPA,也可以為已有應用開啟HPA。推薦您為一個工作負載僅創建一個HPA。

在創建應用時創建HPA

以下以無狀態應用Deployment為例,介紹如何為已有應用開啟HPA。其他工作負載類型的步驟類似。

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

  3. 無狀態頁面,單擊使用鏡像創建

  4. 創建頁面,按照頁面提示完成應用基本信息配置、容器配置、服務配置和伸縮配置,創建一個支持HPA的Deployment。

    具體步驟及配置項說明,請參見創建無狀態工作負載Deployment。下文僅介紹主要配置項。

    • 應用基本信息:配置應用的名稱、副本數量等。

    • 容器配置:配置鏡像,并配置所需的CPU和內存資源。

      您可以使用資源畫像功能對資源使用量歷史數據進行分析,獲取配置容器Request和Limit的相關建議。更多信息,請參見資源畫像

      重要

      請為應用設置所需的請求(Request)資源,否則無法進行容器自動伸縮。

    • 高級配置

      • 訪問設置區域,單擊服務(Service)對應的創建,配置Service。

      • 伸縮配置區域,勾選指標伸縮開啟,配置伸縮的條件和參數。

        • 指標:支持CPU和內存,需要和設置的所需資源類型相同。當同時指定CPU和內存資源類型時,HPA會在檢測到任何一個指標達到擴縮閾值后執行擴縮容操作。

        • 觸發條件:資源使用率的百分比,超過該使用量,容器開始擴容。有關Pod水平自動擴縮的算法,請參見算法細節

        • 最大副本數:該Deployment可擴容的容器數量上限。該值需要大于最小副本數。

        • 最小副本數:該Deployment可縮容的容器數量下限。該值需要設置為大于等于1的整數。

    創建完成后,您可以在無狀態頁面查看創建的Deployment。單擊Deployment名稱,然后在Deployment詳情頁面單擊容器伸縮頁簽。在此區域,您可以查看HPA活動相關指標,包括CPU或內存使用率、最大或最小副本數等,以及對HPA進行管理,包括更新HPA配置、停用HPA等。

為已有應用創建HPA

以下以無狀態應用Deployment為例,介紹如何為已有應用開啟HPA。其他工作負載類型的步驟類似。

工作負載頁面

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

  3. 無狀態頁面,單擊目標應用名稱,單擊容器伸縮頁簽,然后單擊HPA區域的創建

  4. 創建對話框,按照頁面提示設置伸縮的配置。

    • 名稱:HPA策略名稱。

    • 監控項:支持CPU和內存,需要和設置的所需資源類型相同。當同時指定CPU和內存資源類型時,HPA會在檢測到任何一個指標達到擴縮閾值后執行擴縮容操作。

    • 閾值:資源使用率的百分比,超過該使用量,容器開始擴容。有關Pod水平自動擴縮的算法,請參見算法細節

    • 最大容器數量:該Deployment可擴容的容器數量上限。該值需要大于最小副本數。

    • 最小容器數量:該Deployment可縮容的容器數量下限。該值需要設置為大于等于1的整數。

配置完成后,您可以在無狀態應用頁面單擊Deployment名稱,然后在Deployment詳情頁面單擊容器伸縮頁簽。在此區域,您可以查看HPA活動相關指標,包括CPU或內存使用率、最大或最小副本數等,以及對HPA進行管理,包括更新HPA配置、停用HPA等。

工作負載伸縮頁面

說明

此頁面目前白名單開放中。如需使用,請提交工單申請。

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇自動伸縮 > 工作負載伸縮

  3. 在頁面右上角,單擊創建自動伸縮,選擇目標工作負載,然后在水平伸縮頁簽下勾選HPA選項,按照頁面提示配置HPA策略。

    • 伸縮策略名稱:HPA策略名稱。

    • 最小容器數量:該工作負載可縮容的容器數量下限。該值需要設置為大于等于1的整數。

    • 最大容器數量:該工作負載可擴容的容器數量上限。該值需要大于最小副本數。

    • 監控項:支持CPU和內存,需要和設置的所需資源類型相同。當同時指定CPU和內存資源類型時,HPA會在檢測到任何一個指標達到擴縮閾值后執行擴縮容操作。

    • 閾值:資源使用率的百分比,超過該使用量,容器開始擴容。有關Pod水平自動擴縮的算法,請參見算法細節

創建完成后,您可以在工作負載伸縮頁面查看HPA列表。在操作列,您可以查看HPA活動相關指標,包括CPU或內存使用率、最大或最小副本數等,以及對HPA進行管理,包括更新HPA配置、停用HPA等。

結果驗證

  1. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇自動伸縮 > 工作負載伸縮

  2. 單擊水平伸縮頁簽,然后選擇HPA,查看擴縮容狀態和任務列表。

說明

在實際使用環境中,應用會根據Pod負載進行伸縮。您也可以在測試環境中進行Pod壓測,驗證水平伸縮情況。

通過kubectl命令創建HPA應用

您也可以通過編排模板來手動創建HPA,并將其綁定到要伸縮的Deployment對象上,通過kubectl命令實現容器自動伸縮配置。推薦您為一個工作負載僅創建一個HPA。下文以部署支持HPA的Nginx應用為例。

  1. 創建并復制以下內容到nginx.yml中。

    重要

    實現HPA時,需為Pod設置request資源,否則HPA無法運行。您可以使用資源畫像功能對資源使用量歷史數據進行分析,獲取配置容器Request和Limit的相關建議。更多信息,請參見資源畫像

    展開查看YAML示例

    apiVersion: apps/v1 
    kind: Deployment
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx  
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9 # 替換為實際的<image_name:tags>。
            ports:
            - containerPort: 80
            resources:
              requests:                         # 必須設置,否則HPA無法運行。
                cpu: 500m
  2. 執行以下命令,創建Nginx應用。

    kubectl apply -f nginx.yml
  3. 創建并復制以下內容到hpa.yml中,用于創建HPA。

    通過scaleTargetRef設置當前HPA綁定的對象。本例中綁定名為nginx的Deployment,在確保所有Pod中容器的平均CPU使用率達到50%時觸發擴縮操作。

    1.24及以上

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # Deployment可縮容的容器數量下限,需設置為大于等于1的整數。
      maxReplicas: 10  # 該Deployment可擴容的容器數量上限,需大于minReplicas。
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50 # 目標資源的平均使用率,即資源使用量的平均值與其請求量之間的比例。
                   

    1.24以下

    apiVersion: autoscaling/v2beta2
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx-hpa
    spec:
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: nginx
      minReplicas: 1  # 需要為大于等于1的整數。
      maxReplicas: 10  # 需要大于最小副本數。
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
                   

    如果需要同時指定CPU和內存指標,您可以在metrics字段下同時指定cpumemory類型的資源,而不是創建2個HPA。當HPA檢測到任何一個指標達到擴縮閾值后,便會執行擴縮容操作。

    metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 50
  4. 執行以下命令,創建HPA。

    kubectl apply -f hpa.yml

    此時,執行kubectl describe hpa <HPA名稱>(本示例的HPA名稱為nginx-hpa.yml),預期輸出的警告信息如下,表明HPA仍在部署中。您可以執行kubectl get hpa命令查看HPA的狀態。

    Warning  FailedGetResourceMetric       2m (x6 over 4m)  horizontal-pod-autoscaler  missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5897-mqzs7
    
    Warning  FailedComputeMetricsReplicas  2m (x6 over 4m)  horizontal-pod-autoscaler  failed to get cpu utilization: missing request for cpu on container nginx in pod default/nginx-deployment-basic-75675f5
  5. 等待HPA創建成功且Pod達到伸縮條件后(本示例為Nginx的Pod CPU使用率超過50%),再次執行kubectl describe hpa <HPA的名稱>命令,查看水平伸縮情況。

    預期輸出如下,表明HPA正常運行。

    Type    Reason             Age   From                       Message
      ----    ------             ----  ----                       -------
      Normal  SuccessfulRescale  5m6s  horizontal-pod-autoscaler  New size: 1; reason: All metrics below target

相關操作

如果默認的擴縮容行為無法滿足業務需求,您可以通過behavior字段更細粒度地配置縮容(scaleDown)和擴容(scaleUp)行為。更多信息,請參見配置擴縮行為

behavior支持的典型場景包括但不僅限于:

  • 在流量急劇上升時實現快速擴容。

  • 在負載波動頻繁的場景下實現快速擴容和緩慢縮容。

  • 對狀態敏感的應用實現禁止縮容。

  • 在資源有限或成本敏感的場景中,通過穩定窗口stabilizationWindowSeconds來限制擴容的速度,減少因短暫波動導致的頻繁調整。

關于behavior配置說明以及配置示例,請參見調節HPA擴縮容靈敏度

常見問題

相關文檔

其他相關操作文檔

其他工作負載伸縮方案

  • 如果您的應用資源使用率存在周期性變化,需要按照類似Crontab的策略定時對Pod進行擴縮容,請參見使用容器定時水平伸縮(CronHPA)

  • 如果您的應用資源使用率存在周期性變化,但難以通過規則定義,您可以選擇AHPA,以根據業務歷史指標自動識別業務水位周期,進行Pod擴縮容,請參見AHPA概述

  • 如需基于Pod的資源使用情況自動為Pod設置資源占用的限制,從而讓Pod獲得足夠的計算資源,請參見使用容器垂直伸縮(VPA)

  • 如需基于消息隊列、定時策略、自定義指標等Kubernetes事件靈活自定義擴縮容策略,對Pod進行擴縮容,請參見事件驅動彈性

搭配方案

您可以將HPA與節點自動伸縮功能搭配使用,在集群節點資源不足時,實現節點的自動擴縮。更多信息,請參見啟用節點自動伸縮