Pod Scaler, Kubernetes’te bir Deployment, DaemonSet veya StatefulSet gibi bir objenin pod sayısını otomatik olarak ölçeklendirmeyi amaçlar. Bu, pod sayısını belirli bir koşulu sağlamaya göre artırır veya azaltır. Bu koşul, genellikle CPU kullanımı, bellek kullanımı veya istek sayısı gibi bir miktardır.

pod scaler

Kubernetes’te Pod Scaler kullanımı için, öncelikle bir Horizontal Pod Autoscaler (HPA) objesi oluşturmanız gerekir. HPA objesi, bir Deployment, DaemonSet veya StatefulSet gibi bir objenin pod sayısını nasıl ölçeklendireceğini belirtir. HPA objesi, bir hedef CPU kullanım oranı veya hedef bellek kullanım oranı gibi bir koşulu kullanarak pod sayısını otomatik olarak ölçeklendirir.

Deployment objesi için bir HPA objesi

Aşağıda, Deployment objesi için bir HPA objesi oluşturmak için bir örnek yaml dosyası verilmiştir:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-deployment-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

Bu yaml dosyası, “my-deployment” adlı Deployment objesinin pod sayısını otomatik olarak ölçeklendirecek bir HPA objesi oluşturur. HPA, Deployment objesi için hedef CPU kullanım oranının %50 olması koşulu sağlandığında pod sayısını otomatik olarak artıracaktır. Ayrıca, HPA objesi, pod sayısını en az 1 ve en fazla 10 olacak şekilde sınırlar.

DaemonSet objesi için bir HPA objesi

Aşağıda, DaemonSet objesi için bir HPA objesi oluşturmak için bir örnek yaml dosyası verilmiştir:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-daemonset-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: DaemonSet
    name: my-daemonset
  minReplicas: 1
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

Bu yaml dosyası, “my-daemonset” adlı DaemonSet objesinin pod sayısını otomatik olarak ölçeklendirecek bir HPA objesi oluşturur. HPA, DaemonSet objesi için hedef CPU kullanım oranının %50 olması koşulu sağlandığında pod sayısını otomatik olarak artıracaktır. Ayrıca, HPA objesi, pod sayısını en az 1 ve en fazla 10 olacak şekilde sınırlar.

StatefulSet objesi için bir HPA objesi

Aşağıda, StatefulSet objesi için bir HPA objesi oluşturmak için bir örnek yaml dosyası verilmiştir:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-statefulset-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: StatefulSet
    name: my-statefulset
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 75

Bu yaml dosyası, “my-statefulset” adlı StatefulSet objesinin pod sayısını otomatik olarak ölçeklendirecek bir HPA objesi oluşturur. HPA, StatefulSet objesi için hedef CPU kullanım oranının %75 olması koşulu sağlandığında pod sayısını otomatik olarak artıracaktır. Ayrıca, HPA objesi, pod sayısını en az 1 ve en fazla 5 olacak şekilde sınırlar.

targetMemoryUtilizationPercentage kullanarak memory üzerinden ayarlama da yapabilirsiniz.

Sonuç

Bu örneklerde gösterildiği gibi, Pod Scaler kullanımı için bir HPA objesi oluşturmanız gerekir. HPA objesi, bir hedef CPU kullanım oranı veya hedef bellek kullanım oranı gibi bir koşulu kullanarak pod sayısını otomatik olarak ölçeklendirir. Ayrıca, HPA objesi, pod sayısını en az ve en fazla sınırları belirterek sınırlar. Bu bağlantı üzerinden kubernetes dökümantasyonuna ulaşabilirsiniz. Ayrıca ilgili çekerse bu bağlantıdan Kubernetes deployment stratejileri için yazdığım yazıya ulaşabililirsiniz.

Dipnot: Eğer deploymentlara yani podlara limit vermezseniz aşağıdaki hata ile karşılaşırsınız.

The HPA was unable to compute the replica count: failed to get cpu utilization: missing request for cpu