Horizontal Pod Autoscaler (HPA), kaynak kullanımına göre pod çoğaltma sayısını otomatik olarak ayarlar. Container Service for Kubernetes (ACK) içinde uygulamalarınız için HPA'yı konsol veya kubectl kullanarak etkinleştirebilirsiniz.
Ön koşullar
Bir Kubernetes kümesine kubectl kullanarak bağlandınız.
HPA etkinleştirilmiş bir uygulama oluşturun
Konsolu kullanın
ACS konsoluna giriş yapın. Sol gezinme bölmesinde Clusters öğesini tıklayın.
Clusters sayfasında hedef kümenin adını tıklayın. Sol gezinme bölmesinde Workloads > Deployments seçeneğini belirleyin.
Deployments sayfasında Create from Image seçeneğini tıklayın.
-
Basic Information sayfasında uygulama parametrelerini belirtin ve Next seçeneğini tıklayın.
Parameter
Description
Namespace
Uygulamanın ait olduğu ad alanı. Varsayılan değer:default.
Application Name
Uygulamanın adı.
Replicas
Uygulama için pod sayısı. Varsayılan: 2.
Workload
İş yükü türü. Deployments, StatefulSets, Jobs veya CronJobs seçeneklerinden birini belirleyin.
Labels
Uygulamayı tanımlamak için kullanılan etiket.
Annotations
Uygulama için ek açıklama (annotation).
Instance Type
Pod'un örnek türü. General-purpose, BestEffort veya Performance-enhanced seçeneklerinden birini belirleyin. -
Container sayfasında konteyneri yapılandırın, bir görüntü seçin ve kaynak isteklerini belirtin. Ardından Next seçeneğini tıklayın. Daha fazla bilgi için bkz. Konteyner yapılandırması.
NotHPA'nın çalışması için Deployment üzerinde kaynak isteklerinin belirtilmiş olması gerekir.
Access Control bölümünde, Advanced sayfasında Service yanındaki Create seçeneğini tıklayın ve Service parametrelerini yapılandırın. Daha fazla bilgi için bkz. Gelişmiş yapılandırmalar.
-
HPA için Advanced sayfasında Enable seçeneğini belirleyin ve ölçeklendirme parametrelerini yapılandırın.
Metric: Desteklenen ölçümler CPU ve bellektir. Yapılandırılan gerekli kaynak türüyle eşleşmelidir.
Condition:: Kaynak kullanım yüzdesi. Kullanım bu değeri aştığında konteyner dışa doğru ölçeklenir. Yatay Pod Otomatik Ölçeklendirme algoritması hakkında daha fazla bilgi için bkz. Algorithm details.
Max. Replicas: Deployment'ın çalıştırabileceği maksimum konteyner sayısı.
Min. Replicas: Çoğaltma sayısı için alt sınır.
HPA etkinleştirilmiş Deployment'ı oluşturmak için Create seçeneğini tıklayın.
kubectl kullanın
Bir orkestrasyon şablonu ve kubectl kullanarak bir HPA nesnesi oluşturup bunu bir Deployment'a bağlayabilirsiniz.
Aşağıdaki örnekte bir NGINX uygulaması kullanılmaktadır.
-
nginx.yaml adlı bir dosya oluşturun ve aşağıdaki içeriği dosyaya kopyalayın.
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 with your image name and tag ports: - containerPort: 80 resources: requests: ## Required for HPA to function. cpu: 500m -
NGINX uygulamasını dağıtmak için aşağıdaki komutu çalıştırın.
kubectl apply -f nginx.yaml -
HPA'yı tanımlamak için aşağıdaki içeriğe sahip bir
hpa.yamldosyası oluşturun.scaleTargetRef alanı, HPA'nın ölçeklendireceği kaynağı belirtir. Bu örnekte hedef nginx Deployment'ıdır.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 # The minimum replica count. Must be >= 1. maxReplicas: 10 # The maximum replica count. Must be > minReplicas. metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 # The target average utilization across all pods, calculated as (average usage / requested amount). -
HPA'yı oluşturmak için aşağıdaki komutu çalıştırın.
kubectl apply -f hpa.yaml -
HPA oluşturulduktan sonra
kubectl describe hpa <HPA_NAME>komutunu çalıştırın.Aşağıdaki çıktı, HPA'nın doğru çalıştığını gösterir.
Type Reason Age From Message ---- ------ ---- ---- ------- Normal SuccessfulRescale 4m53s horizontal-pod-autoscaler New size: 1; reason: All metrics below target
İlgili bilgiler
Zamanlanmış otomatik ölçeklendirme için bkz. Cron Horizontal Pod Autoscaler (CronHPA).