aboutsummaryrefslogtreecommitdiff
path: root/krash.in
diff options
context:
space:
mode:
Diffstat (limited to 'krash.in')
-rw-r--r--krash.in39
1 files changed, 39 insertions, 0 deletions
diff --git a/krash.in b/krash.in
new file mode 100644
index 0000000..aff12ec
--- /dev/null
+++ b/krash.in
@@ -0,0 +1,39 @@
+#!@ENV_ABSOLUTE_PATH@ bash
+set -eufo pipefail
+
+command -v kubectl >/dev/null 2>&1 || { echo 'Please install kubectl'; exit 1; }
+
+USAGE="Usage: $(basename "$0") <node-name> [-r|--reboot]"
+[ $# -eq 0 ] && { echo "$USAGE"; exit 1; }
+NODE_REBOOT=0
+NODE_NAME=${1:-}; shift
+
+if [[ $# -gt 0 ]]; then
+ if [[ "$1" =~ ^-r|--reboot$ ]]; then
+ NODE_REBOOT=1; shift
+ else
+ echo "$USAGE"; exit 1
+ fi
+fi
+
+kubectl apply -f - <<-EOF > /dev/null
+---
+apiVersion: v1
+kind: Pod
+metadata:
+ name: krash-${RANDOM}
+spec:
+ containers:
+ - name: krash
+ image: alpine:latest
+ securityContext:
+ privileged: true
+ command:
+ - /bin/sh
+ - -c
+ - |
+ sysctl -w kernel.panic=${NODE_REBOOT}
+ echo 'c' > /proc/sysrq-trigger
+ priorityClassName: system-node-critical
+ nodeName: ${NODE_NAME}
+EOF