Created
November 4, 2021 18:18
-
-
Save mrballcb/4b5931c9a79139173f190dcf161bf0cf to your computer and use it in GitHub Desktop.
Show pods in "transition" mode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Expected input can be one of the following types: | |
# CTX # Just the context - shows "transition mode" for this cluster and all kube masters/nodes | |
# CTX NS # The context, a space, and the namespace - shows all pods in that NS and only kube nodes | |
TYPE=${1-none} | |
CTX=${TYPE} | |
NS=${2-$TYPE} | |
# Extract instance types, AZ, and kops instance group name | |
SED_FILTER_LABELS="-e 's/beta.kubernetes.*instance-type=/type=/' -e 's#beta.kubernetes.io/##g' -e 's#kubernetes.io/##g' -e 's#,arch=\w*##' -e 's#,os=\w*##'" | |
shift | |
SLEEP=${SLEEP-1} | |
case "$CTX" in | |
context1|context2|context3|context4|context5|context6|context7|context8|context9) | |
NUMNODES=$(kubectl --context $CTX get nodes | grep -v NAME | wc -l) | |
if [ -z "$NODES" -a "$NUMNODES" -le 15 ]; then | |
NODES=1 | |
fi | |
if [ "$CTX" = "$NS" ]; then | |
# Transition mode - Didn't request specific namespace, just show non healthy pods and all masters/nodes | |
watch -n $SLEEP "[ -n \"$NODES\" ] && kubectl --context $CTX get nodes --show-labels | \ | |
sed ${SED_FILTER_LABELS} | \ | |
sort -k 6; \ | |
echo;\ | |
kubectl --context $CTX get pods --all-namespaces $@ -o wide | \ | |
grep -vE 'Completed|Error' | \ | |
grep -vE '(1/1|2/2|3/3|4/4|5/5|6/6)\s*Running'" | |
else | |
shift | |
# Only show pods in the requested namespace, and only nodes (not masters) | |
watch -n $SLEEP "[ -n \"$NODES\" ] && kubectl --context $CTX get nodes --show-labels | \ | |
grep -v master | \ | |
sed ${SED_FILTER_LABELS} | \ | |
sort -t , -k 3; \ | |
echo; \ | |
kubectl --context $CTX -n $NS get pods $@ -o wide" | |
fi | |
;; | |
*) | |
echo "Usage: $(basename $0) target [namespace]" | |
echo "Valid targets:" | |
echo " Specify the 'context', shows nodes and pods with errors:" | |
echo " context1 context2 context3 context4 context5 context6 context7 context8 context9" | |
echo " Specify 'context namespace', shows nodes and pods in that NS" | |
echo " Best to use k9s for that, unless also want node output" | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment