İçerik
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.
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