diff --git a/cesnet-central/playbooks/files/usr/local/bin/k8s-pods-cleaner.sh b/cesnet-central/playbooks/files/usr/local/bin/k8s-pods-cleaner.sh new file mode 100755 index 0000000000000000000000000000000000000000..5a0e482ef08f813c095924eafee8f9690742edc1 --- /dev/null +++ b/cesnet-central/playbooks/files/usr/local/bin/k8s-pods-cleaner.sh @@ -0,0 +1,26 @@ +#! /bin/sh + +# +# Clean kubernetes pods stuck in "Terminating" state +# +# Example: +# +# k8s-pods-cleaner.sh hub app=jupyterhub,component=singleuser-server --yes +# + +if [ -z "$1" ]; then + echo "Usage: $0 NAMESPACE [QUERY [--yes]]" + exit 0 +fi + +NS="$1" +QUERY="$2" +PERFORM="$3" +for pod in $(kubectl get pod -n "$NS" -l "$QUERY" --field-selector="status.phase==Failed" -ojsonpath='{.items[*].metadata.name}'); do + if [ -n "$PERFORM" ]; then + kubectl get pod -n "$NS" "$pod" -oyaml > "/tmp/$NS-$pod.yaml" + kubectl delete pod -n "$NS" "$pod" --force + else + kubectl get pod -n "$NS" "$pod" + fi +done diff --git a/cesnet-central/playbooks/k8s.yaml b/cesnet-central/playbooks/k8s.yaml index 26daba2a6ce0c491beecb566efb487450f4c2bca..28d0277980bcd89a724243f9601d0f9e23298b7e 100644 --- a/cesnet-central/playbooks/k8s.yaml +++ b/cesnet-central/playbooks/k8s.yaml @@ -167,6 +167,11 @@ dest: /etc/profile.d/k8s-cheats.sh src: files//etc/profile.d/k8s-cheats.sh mode: preserve + - name: K8s pods cleaner + copy: + dest: /usr/local/bin/k8s-pods-cleaner.sh + src: files/usr/local/bin/k8s-pods-cleaner.sh + mode: preserve - name: K8s network deployment hosts: master