Skip to content

Experiments

The experiment execution is triggered upon creation of the ChaosEngine resource (various examples of which are provided under the respective experiments). Typically, these chaosengines are embedded within the 'steps' of a Litmus Chaos Workflow here. However, one may also create the chaos engines directly by hand, and the chaos-operator reconciles this resource and triggers the experiment execution.

Provided below are tables with links to the individual experiment docs for easy navigation

Kubernetes Experiments

It contains chaos experiments which apply on the resources, which are running on the kubernetes cluster. It contains Generic experiments.

Following Kubernetes Chaos experiments are available:

Generic

Chaos actions that apply to generic Kubernetes resources are classified into this category. Following chaos experiments are supported under Generic Chaos Chart

Pod Chaos

Experiment Name Description User Guide
Container Kill Kills the container in the application pod container-kill
Disk Fill Fillup Ephemeral Storage of a Resourced disk-fill
Pod Autoscaler Scales the application replicas and test the node autoscaling on cluster pod-autoscaler
Pod CPU Hog Exec Consumes CPU resources on the application container by invoking a utility within the app container base image pod-cpu-hog-exec
Pod CPU Hog Consumes CPU resources on the application container pod-cpu-hog
Pod Delete Deletes the application pod pod-delete
Pod DNS Error Disrupt dns resolution in kubernetes po pod-dns-error
Pod DNS Spoof Spoof dns resolution in kubernetes pod pod-dns-spoof
Pod IO Stress Injects IO stress resources on the application container pod-io-stress
Pod Memory Hog Exec Consumes Memory resources on the application container by invoking a utility within the app container base image pod-memory-hog-exec
Pod Memory Hog Consumes Memory resources on the application container pod-memory-hog
Pod Network Corruption Injects Network Packet Corruption into Application Pod pod-network-corruption
Pod Network Duplication Injects Network Packet Duplication into Application Pod pod-network-duplication
Pod Network Latency Injects Network latency into Application Pod pod-network-latency
Pod Network Loss Injects Network loss into Application Pod pod-network-loss
Pod HTTP Latency Injects HTTP latency into Application Pod pod-http-latency
Pod HTTP Reset Peer Injects HTTP reset peer into Application Pod pod-http-reset-peer
Pod HTTP Status Code Injects HTTP status code chaos into Application Pod pod-http-status-code
Pod HTTP Modify Body Injects HTTP modify body into Application Pod pod-http-modify-body
Pod HTTP Modify Header Injects HTTP Modify Header into Application Pod pod-http-modify-header

Node Chaos

Experiment Name Description User Guide
Docker Service Kill Kills the docker service on the application node docker-service-kill
Kubelet Service Kill Kills the kubelet service on the application node kubelet-service-kill
Node CPU Hog Exhaust CPU resources on the Kubernetes Node node-cpu-hog
Node Drain Drains the target node node-drain
Node IO Stress Injects IO stress resources on the application node node-io-stress
Node Memory Hog Exhaust Memory resources on the Kubernetes Node node-memory-hog
Node Restart Restarts the target node node-restart
Node Taint Taints the target node node-taint

Application Chaos

While Chaos Experiments under the Generic category offer the ability to induce chaos into Kubernetes resources, it is difficult to analyze and conclude if the chaos induced found a weakness in a given application. The application specific chaos experiments are built with some checks on pre-conditions and some expected outcomes after the chaos injection. The result of the chaos experiment is determined by matching the outcome with the expected outcome.

Experiment Name Description User Guide
Spring Boot App Kill Kill the spring boot application spring-boot-app-kill
Spring Boot CPU Stress Stress the CPU of the spring boot application spring-boot-cpu-stress
Spring Boot Memory Stress Stress the memory of the spring boot application spring-boot-memory-stress
Spring Boot Latency Inject latency to the spring boot application network spring-boot-latency
Spring Boot Exception Raise exceptions to the spring boot application spring-boot-exceptions
Spring Boot Faults It injects the multiple spring boot faults simultaneously on the target pods spring-boot-faults

Load Chaos

Load chaos contains different chaos experiments to test the app/platform service availability. It will install all the experiments which can be used to inject load into the services like VMs, Pods and so on.

Experiment Name Description User Guide
k6 Load Generator Generate load using single js script k6-loadgen

Cloud Infrastructure

Chaos experiments that inject chaos into the platform resources of Kubernetes are classified into this category. Management of platform resources vary significantly from each other, Chaos Charts may be maintained separately for each platform (For example, AWS, GCP, Azure, etc)

Following Platform Chaos experiments are available:

AWS

Experiment Name Description User Guide
EC2 Stop By ID Stop the EC2 instance matched by instance id ec2-stop-by-id
EC2 Stop By Tag Stop the EC2 instance matched by instance tag ec2-stop-by-tag
EBS Loss By ID Detach the EBS volume matched by volume id ebs-loss-by-id
EBS Loss By Tag Detach the EBS volume matched by volume tag ebs-loss-by-tag

GCP

Experiment Name Description User Guide
GCP VM Instance Stop Stop the gcp vm instance gcp-vm-instance-stop
GCP VM Disk Loss Detach the gcp disk gcp-vm-disk-loss

Azure

Experiment Name Description User Guide
Azure Instance Stop Stop the azure instance azure-instance-stop
Azure Disk Loss Detach azure disk from instance azure-disk-loss

VMWare

Experiment Name Description User Guide
VM Poweroff Poweroff the vmware VM vm-poweroff