diff options
author | Christian Segundo | 2023-10-07 06:53:00 +0200 |
---|---|---|
committer | Christian Segundo | 2023-10-07 06:53:00 +0200 |
commit | 4397d810dd5d1d0f8453d6914e4b8c04e448b4ca (patch) | |
tree | a422ea646ea7c78d354c40c2f2b5ea869ead858b | |
parent | dc45fc9d0c3ebed0c1340082b1d194fea66cd1ad (diff) | |
download | krash-4397d810dd5d1d0f8453d6914e4b8c04e448b4ca.tar.gz |
add le files
-rw-r--r-- | Makefile.am | 7 | ||||
-rw-r--r-- | configure.ac | 19 | ||||
-rw-r--r-- | krash.in | 39 |
3 files changed, 65 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..8b45e33 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,7 @@ +bin_SCRIPTS = krash +CLEANFILES = $(bin_SCRIPTS) + +install-exec-hook: + cd $(DESTDIR)$(bindir) && rm -f kubectl-node-crash && $(LN_S) krash kubectl-node-crash +uninstall-hook: + cd $(DESTDIR)$(bindir) && rm -f kubectl-node-crash diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..3c9d22c --- /dev/null +++ b/configure.ac @@ -0,0 +1,19 @@ +AC_INIT([krash], [1.0.0], [christian@segundo.io]) +AM_INIT_AUTOMAKE([foreign no-dependencies]) +AC_CONFIG_FILES([Makefile]) + +AC_SUBST([CC]) + +AC_PROG_LN_S +AC_PATH_PROG([ENV_ABSOLUTE_PATH], [env]) +AS_IF([test x"$ENV_ABSOLUTE_PATH" = x""], [AC_MSG_ERROR([env is not available])]) +AC_SUBST([ENV_ABSOLUTE_PATH]) + +AC_CHECK_PROG(BASH_CHECK,bash,yes) +AC_CHECK_PROG(KUBECTL_CHECK,kubectl,yes) +AS_IF([test x"$BASH_CHECK" != x"yes"], [AC_MSG_ERROR([bash is not available])]) +AS_IF([test x"$KUBECTL_CHECK" != x"yes"], [AC_MSG_ERROR([kubectl is not available])]) + +AC_CONFIG_FILES([krash], [chmod +x krash]) + +AC_OUTPUT 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 |