This repository contains a Dockerfile
and associated Kubernetes configuration for a Deployment that will randomly delete pods in a given namespace. This is implemented in Bash mostly because I'm writing it for a lightning talk.
An image built from the Dockerfile
in this repository is available on Docker Hub as jnewland/kubernetes-pod-chaos-monkey
.
A few environment variables are available for configuration:
DELAY
: seconds between selecting and deleting a pod. Defaults to30
.NAMESPACE
: the namespace to select a pod from. Defaults todefault
.
Example Kubernetes config is included at config/kubernetes/production/deployment.yaml
$ kubectl apply -f config/kubernetes/production/deployment.yaml
deployment "kubernetes-pod-chaos-monkey" created
$ kubectl get pods | grep chaos
kubernetes-pod-chaos-monkey-3294408070-6w6oh 1/1 Running 0 19s
$ kubectl logs kubernetes-pod-chaos-monkey-3294408070-6w6oh
+ : 30
+ : default
+ true
+ xargs -t --no-run-if-empty kubectl --namespace default delete pod
+ head -n 1
+ shuf
+ tr ' ' '\n'
+ kubectl --namespace default -o 'jsonpath={.items[*].metadata.name}' get pods
kubectl --namespace default delete pod dd-agent-3hw6w
pod "dd-agent-3hw6w" deleted
+ sleep 30