All Projects → mhausenblas → Kboom

mhausenblas / Kboom

Licence: apache-2.0
The Kubernetes scale & soak load tester

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Kboom

Predator
A powerful open-source platform for load testing APIs.
Stars: ✭ 356 (+39.06%)
Mutual labels:  performance, load-testing
Taurus
Automation-friendly framework for Continuous Testing by
Stars: ✭ 1,566 (+511.72%)
Mutual labels:  performance, load-testing
Performance Testing Framework
Framework allows to perform load testing with Apache Jmeter, view application/server metrics in real-time with Grafana, analyze errors cause with detailed traces for failed requests, compare different test runs in scripted dashboard and perform frontend performance testing with sitespeed.io+webpagetest
Stars: ✭ 275 (+7.42%)
Mutual labels:  performance, load-testing
Gatling Dubbo
A gatling plugin for running load tests on Apache Dubbo(https://github.com/apache/incubator-dubbo) and other java ecosystem.
Stars: ✭ 131 (-48.83%)
Mutual labels:  performance, load-testing
Yandex Tank
Load and performance benchmark tool
Stars: ✭ 2,110 (+724.22%)
Mutual labels:  performance, load-testing
Bombardier
Fast cross-platform HTTP benchmarking tool written in Go
Stars: ✭ 2,952 (+1053.13%)
Mutual labels:  performance, load-testing
Cassowary
🚀 Modern cross-platform HTTP load-testing tool written in Go
Stars: ✭ 488 (+90.63%)
Mutual labels:  performance, load-testing
Goose
Load testing tool, inspired by Locust
Stars: ✭ 151 (-41.02%)
Mutual labels:  performance, load-testing
K6
A modern load testing tool, using Go and JavaScript - https://k6.io
Stars: ✭ 14,829 (+5692.58%)
Mutual labels:  performance, load-testing
Performance Plugin
Performance Test Running and Reporting for Jenkins CI
Stars: ✭ 176 (-31.25%)
Mutual labels:  performance, load-testing
Bloom
🌸 HTTP REST API caching middleware, to be used between load balancers and REST API workers.
Stars: ✭ 553 (+116.02%)
Mutual labels:  scale, performance
wp-testing
WordPress testing plugin
Stars: ✭ 12 (-95.31%)
Mutual labels:  scale
StressThing
a software testing platform to perform stress test on web of things
Stars: ✭ 12 (-95.31%)
Mutual labels:  load-testing
k6-example-github-actions
No description or website provided.
Stars: ✭ 18 (-92.97%)
Mutual labels:  load-testing
downscale
Better image downscale with canvas.
Stars: ✭ 80 (-68.75%)
Mutual labels:  scale
durable-functions-producer-consumer
Uses Durable Functions' fan out pattern to load N messages across M sessions into various Azure Storage/Messaging services. Includes the ability to consume the messages with another Azure Function & load timing data in to Event Hubs for ingestion in to analytics services like Azure Data Explorer
Stars: ✭ 31 (-87.89%)
Mutual labels:  load-testing
kloadgen
KLoadGen is kafka load generator plugin for jmeter designed to work with AVRO and JSON schema Registries.
Stars: ✭ 144 (-43.75%)
Mutual labels:  load-testing
LoadTestToolbox
Lightweight tools for load testing web applications, written in C#
Stars: ✭ 75 (-70.7%)
Mutual labels:  load-testing
k6-template-es6
Template repository for bundling test projects into single test scripts runnable by k6
Stars: ✭ 39 (-84.77%)
Mutual labels:  load-testing
jmeter-grpc-plugin
A JMeter plugin supports load test gRPC
Stars: ✭ 36 (-85.94%)
Mutual labels:  load-testing

A simple Kubernetes load testing tool

kboom logo

NOTE: this is WIP and also this is not an official AWS tool. Provided as is and use at your own risk.

Think of kboom as the Kubernetes equivalent of boom, allowing you to create short-term load for scale testing and long-term load for soak testing. Supported load out of the box for scale testing are pods and custom resources via CRDs for soak testing is planned.

Check out the interactive demo.

Why bother?

I didn't find a usable tool to do Kubernetes-native load testing, for scalability and/or soak purposes. Here's where I can imagine kboom might be useful for you:

  • You are a cluster admin and want to test how much "fits" in the cluster. You use kboom for a scale test and see how many pods can be placed and how long it takes.
  • You are a cluster or namespace admin and want to test how long it takes to launch a set number of pods in a new cluster, comparing it with what you already know from an existing cluster.
  • You are developer and want to test your custom controller or operator. You use kboom for a long-term soak test of your controller.

Install

Before you begin, you will need kubectl client version v1.12.0 or higher for kubectl plugin support.

To install kboom, do the following:

$ curl https://raw.githubusercontent.com/mhausenblas/kboom/master/kboom -o kubectl-kboom
$ chmod +x kubectl-kboom
$ sudo mv ./kubectl-kboom /usr/local/bin

From this point on you can use it as a kubectl plugin as in kubectl kboom. However, in order for you to generate the load, you'll have to also give it the necessary permissions (note: you only need to do this once, per cluster):

$ kubectl create ns kboom
$ kubectl apply -f https://raw.githubusercontent.com/mhausenblas/kboom/master/permissions.yaml

Now you're set up and good to go, next up, learn how to use kboom.

Use

Here's how you'd use kboom to do some scale testing. The load test is run in-cluster as a Kubernetes job so you do multiple runs and compare outcomes in a straight-forward manner. Note that by default kboom assumes there's a namespace kboom available and it will run in this namespace. If this namespace doesn't exist, create it with kubectl create ns kboom or otherwise use the --namespace parameter to overwrite it.

So, first we use the generate command to generate the load, launching 10 pods (that is, using busybox containers that just sleep) with a timeout of 14 seconds (that is, if a pod is not running within that time, it's considered a failure):

$ kubectl kboom generate --mode=scale:14 --load=pods:10
job.batch/kboom created

From now on you can execute the results command as often as you like, you can see the live progress there:

$ kubectl kboom results
Server Version: v1.12.6-eks-d69f1b
Running a scale test, launching 10 pod(s) with a 14s timeout ...

-------- Results --------
Overall pods successful: 6 out of 10
Total runtime: 14.061988653s
Fastest pod: 9.003997546s
Slowest pod: 13.003831951s
p50 pods: 12.003529448s
p95 pods: 13.003831951s

When you're done, and don't need the results anymore, use kubectl kboom cleanup to get rid of the run. Note: should you execute the cleanup command too soon for kboom to terminate all its test pods, you can use kubectl delete po -l=generator=kboom to get rid of all orphaned pods.

Known issues and plans

  • Need to come up with stricter permissions, currently too wide and not following the least privileges principle.
  • Add support for custom resources and soak testing (running for many hours).
  • Add support for other core resources, such as services or deployments.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].