Skip to main content

Automatic Scaling of Apinizer Environments

This document explains how to configure horizontal auto-scaling operations for pods. This horizontal scaling feature optimizes resource usage by automatically increasing and decreasing the number of pods according to application demands. To use the scaling feature in your Kubernetes cluster, a metric-server must be installed. If it is not available, you can check the Kubernetes Metric Server Installation page for installation.
sudo vi hpa-autoscaling.yaml
Edit the NAMESPACE and DEPLOYMENT_NAME fields in the Yaml according to your application.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: apinizer-hpa
  namespace: <NAMESPACE>
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: <DEPLOYMENT_NAME>
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 70
  behavior:
    scaleDown:
      selectPolicy: Max
      policies:
      - type: Pods
        value: 1
        periodSeconds: 60
    scaleUp:
      stabilizationWindowSeconds: 60
      policies:
      - type: Pods
        value: 1
        periodSeconds: 60
      selectPolicy: Max
kubectl apply -f manager-hpa-autoscaling.yaml
FieldDescription
scaleTargetRefThis field specifies which deployment the scaling will work for. Example: manager.
minReplicasMinimum number of pods that should exist. Example: 2.
maxReplicasMaximum number of pods that can exist in the system. Example: 10.
averageUtilizationIn this field, you can enter a percentage value for cpu and memory usage. It will create pods when it exceeds the specified level.
scaleDownWhen it falls below the target usage level, it will reduce pods by the given value amount every 60 seconds from the newly created pods.
scaleUpWhen it exceeds the target usage level, it is checked for 60 seconds, which is the stabilizationWindowSeconds value specified. If the condition is met, one pod is added to your cluster every 60 seconds.
To disable the scaleDown feature, change it to “selectPolicy: Disabled”.