diff --git a/crio-clean.sh b/crio-clean.sh new file mode 100644 index 0000000..a66d22a --- /dev/null +++ b/crio-clean.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# vim: set sw=4 ts=4 sts=4 et : + +usage() { + printf 'usage: %s node\n' "${0##*/}" +} + +drain_node() { + kubectl drain \ + --ignore-daemonsets \ + --delete-emptydir-data \ + "$1" +} + +stop_node() { + ssh "$1" doas sh <&2 + systemctl stop kubelet + echo 'Stopping all containers' >&2 + crictl ps -aq | xargs crictl stop + echo 'Stopping CRI-O' >&2 + systemctl stop crio +EOF +} + +wipe_crio() { + echo 'Wiping container storage' + ssh "$1" doas crio wipe -f +} + +start_node() { + echo 'Starting Kubelet/CRI-O' + ssh "$1" doas systemctl start crio kubelet +} + +uncordon_node() { + kubectl uncordon "$1" +} + +main() { + local node=$1 + + if [ -z "${node}" ]; then + usage >&2 + exit 2 + fi + + drain_node "${node}" || exit + stop_node "${node}" || exit + wipe_crio "${node}" || exit + start_node "${node}" || exit + uncordon_node "${node}" || exit +} + +main "$@"