Skip to content

jnewland/kubernetes-pod-chaos-monkey

Repository files navigation

Kubernetes Pod Chaos Monkey

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.

Configuration

A few environment variables are available for configuration:

  • DELAY: seconds between selecting and deleting a pod. Defaults to 30.
  • NAMESPACE: the namespace to select a pod from. Defaults to default.

Example Kubernetes config is included at config/kubernetes/production/deployment.yaml

Example

$ 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

License

MIT