Skip to main content

Command Palette

Search for a command to run...

Kubernetes Cluster Load Testing using kube-burner

Analyze performance and reliability of clusters under pressure with kube-burner

Published
3 min read
Kubernetes Cluster Load Testing using kube-burner
S

As a seasoned system administrator with a passion for technology and problem-solving, I bring 6 Years of hands-on experience in managing and maintaining IT infrastructure. My journey in the field began with a deep curiosity for computers and systems, which has evolved into a fulfilling career dedicated to ensuring the smooth operation of critical business systems.


In this guide, we’ll walk through how to perform load testing on a Kubernetes cluster using kube-burner.

The goal is to evaluate:

  • Cluster stability

  • Resource utilization under heavy workloads

  • Scheduler performance when the cluster is stressed


Overview

kube-burner is a performance and scalability testing tool designed to stress test Kubernetes clusters by deploying configurable workloads at scale.
It’s a great way to validate how your cluster behaves under real-world load conditions.


Cluster Setup

Below are the cluster specifications used in this test:

RolevCPURAMStorage
Master Node28 GB70 GB
Worker Node416 GB70 GB

Installing kube-burner

Run the following commands on your master node to install kube-burner:

curl -Ls https://raw.githubusercontent.com/kube-burner/kube-burner/refs/heads/main/hack/install.sh | sh

This downloads, installs, and verifies kube-burner.


Create a Namespace for Testing

Before starting the test, create a dedicated namespace:

kubectl create ns stress-test

Deployment Template

Create a deployment template file named
templates/nginx-deploy.yaml with the following content:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-small
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-small
  template:
    metadata:
      labels:
        app: nginx-small
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              cpu: "250m"
              memory: "256Mi"
          ports:
            - containerPort: 80

This defines a lightweight NGINX deployment for load testing.


kube-burner Configuration File

Create a configuration file named kube-burner-config.yaml:

global:
  namespace: stress-test   

jobs:
  - name: small-deployments
    jobType: create
    jobIterations: 50
    qps: 20
    burst: 40
    waitWhenFinished: true
    cleanup: false
    objects:
      - objectTemplate: templates/nginx-deploy.yaml
        replicas: 1

You can modify:

  • jobIterations → number of workloads created

  • qps and burst → how fast workloads are created

  • cleanup → whether resources are deleted after the test


Running the Test

Run the load test using:

kube-burner init -c kube-burner-config.yaml --uuid $(uuidgen)

This command creates the defined workloads and simulates real-world stress conditions in your Kubernetes cluster.

Cluster Overview

Deployment Load Test


Monitoring the Cluster

Monitor your cluster performance during the test using these commands:

kubectl get pods -n stress-test
kubectl top nodes
kubectl top pods -n stress-test
kubectl get events -A | tail -n 20

You can also use Grafana dashboards (connected to Prometheus) to visualize:

  • Node and pod CPU usage

  • Memory utilization

  • Scheduler latency

  • API server throughput

    Resource Utilization


Cleanup

After testing, clean up all resources using:

kubectl delete ns stress-test

If the above command doesn’t work, try this alternative:

kubectl delete ns $(kubectl get ns --no-headers -o custom-columns=":metadata.name" | grep stress-test)

This ensures all test-related resources are removed from your cluster.


Conclusion

Load testing your Kubernetes cluster with kube-burner helps you:

  • Validate cluster stability

  • Identify resource bottlenecks

  • Fine-tune scheduler performance

You can tweak configuration parameters like jobIterations, replicas, and resource requests to simulate different load profiles.

References

“Updated on November 2025”