Horizontal Pod Autoscaling

Horizontal Pod Autoscaling in Thalassa Cloud Kubernetes

Horizontal Pod Autoscaling (HPA) in Thalassa Cloud Kubernetes dynamically adjusts the number of running Pods based on real-time CPU and memory utilization or custom application metrics. This ensures workloads can scale efficiently under varying load conditions, optimizing performance and resource usage.

HPA relies on the Metrics Server to retrieve resource utilization metrics and makes scaling decisions accordingly. It is commonly used for applications with fluctuating workloads, such as APIs, web applications, and batch processing jobs.

How HPA Works

HPA monitors the CPU and memory usage of Pods and automatically scales the number of replicas up or down to maintain a specified target utilization.

  • Scaling Up: When resource usage exceeds the defined threshold, HPA increases the number of Pods.
  • Scaling Down: When resource usage falls below the target, HPA reduces the number of Pods to conserve resources.
  • Custom Metrics: HPA can also scale based on application-specific metrics, such as request latency or queue length.

HPA is best suited for stateless applications and works alongside the Kubernetes Nodes to ensure new Pods can be scheduled effectively.

Key Features

FeatureDescription
Dynamic ScalingAdjusts the number of Pods automatically based on real-time metrics.
CPU & Memory UtilizationUses resource metrics to scale workloads efficiently.
Custom Metrics SupportCan scale based on application-specific metrics using Prometheus or external sources.
Min/Max Replica LimitsPrevents over-scaling or under-scaling by defining replica thresholds.
Integration with Metrics ServerUses real-time resource data from the Metrics Server.

Configuring HPA

To enable autoscaling for a Deployment, define an HorizontalPodAutoscaler resource specifying the target resource utilization and replica limits.

Example: Scaling Based on CPU Usage

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-app-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

This configuration ensures that:

  • The web-app Deployment maintains at least 2 replicas and scales up to 10 replicas.
  • HPA scales Pods when CPU utilization exceeds 50% per Pod.

Applying the HPA Configuration

kubectl apply -f hpa.yaml

Viewing HPA Status

To check the current scaling status of an HPA:

kubectl get hpa

Example output:

NAME         REFERENCE       TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
web-app-hpa  Deployment/web-app   60%/50%   2         10        6          5m

This shows that 6 replicas are currently running because the CPU usage exceeded the 50% target.

Troubleshooting HPA

If HPA is not scaling as expected, check the following:

  • Ensure the Metrics Server is running and collecting metrics:
    kubectl top pods
  • Verify that your application is generating measurable CPU/memory load.
  • Check HPA events for any errors:
    kubectl describe hpa web-app-hpa
  • Ensure sufficient Kubernetes Nodes are available to schedule new Pods.

Summary

Horizontal Pod Autoscaling (HPA) in Thalassa Cloud Kubernetes enables dynamic scaling based on real-time metrics, improving performance and resource efficiency. By integrating with the Metrics Server, HPA ensures applications can handle varying workloads without manual intervention. Properly configured, it helps maintain high availability, cost efficiency, and optimal performance for Kubernetes workloads.