阿里云容器計算服務ACS支持通過控制臺界面和kubectl的方式快速創建支持HPA(Horizontal Pod Autoscaling)的應用,實現容器資源的彈性伸縮。本文介紹如何在ACS集群中創建支持HPA的應用并驗證HPA的伸縮效果。
前提條件
已創建ACS集群。具體操作,請參見創建ACS集群。
已使用kubectl連接Kubernetes集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
創建HPA應用
通過控制臺創建
登錄容器計算服務控制臺,在左側導航欄選擇集群。
在集群頁面,單擊目標集群ID,然后在左側導航欄,選擇
。在無狀態頁面,單擊使用鏡像創建。
在應用基本信息頁填寫應用的名稱等信息,然后單擊下一步。
配置項
描述
命名空間
在頁面頂部設置應用部署所處的命名空間,默認使用default命名空間。
應用名稱
設置應用的名稱。
副本數量
即應用包含的Pod數量,默認數量為2。
工作負載
定義資源對象的類型,可選擇無狀態、有狀態、任務、定時任務。
標簽
為該應用添加一個標簽,標識該應用。
注解
為該應用添加一個注解(Annotation)。
實例類型
Pod的實例類型,可選擇通用型、BestEffort、性能型。
在容器配置頁進行容器設置,選擇鏡像,并設置所需的資源。然后單擊下一步。詳情請參見容器配置。
說明您必須為Deployment設置所需資源,否則無法進行容器自動伸縮。
在高級設置頁的訪問設置區域,單擊服務的創建,設置服務的相關信息,詳情請參見高級配置。
在高級設置頁選中指標伸縮的開啟,設置伸縮的條件和配置。
指標:支持CPU和內存,需要和設置的所需資源類型相同。
觸發條件:資源使用率的百分比,超過該使用量,容器開始擴容。有關Pod水平自動擴縮的算法,請參見算法細節。
最大副本數:該Deployment可擴容的容器數量上限。
最小副本數:該Deployment可縮容的容器數量下限。
單擊右下角的創建,一個支持HPA的Deployment就已經創建完畢。
通過kubectl命令創建
您也可通過編排模板來手動創建HPA,并將其綁定到要伸縮的Deployment對象上,通過kubectl命令實現容器自動伸縮配置。
下面針對一個Nginx應用進行舉例。
創建并復制以下內容到nginx.yaml中。
Deployment的編排模板如下。
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/nginx:1.7.9 # replace it with your exactly <image_name:tags> ports: - containerPort: 80 resources: requests: ##必須設置,不然HPA無法運行。 cpu: 500m
執行以下命令,創建Nginx應用。
kubectl apply -f nginx.yaml
創建并復制以下內容到hpa.yaml中,用于創建HPA。
通過scaleTargetRef設置當前HPA綁定的對象,在本例中綁定名為nginx的Deployment。
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 # 目標資源的平均使用率,即資源使用量的平均值與其請求量之間的比例。
執行以下命令,創建HPA。
kubectl apply -f hpa.yaml
等待HPA創建后,再次執行
kubectl describe hpa <HPA的名稱>
命令。可以看到以下信息,則表示HPA已經正常運行。
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
相關文檔
容器定時伸縮請參見容器定時伸縮(CronHPA)。