Skip to content

kubelet — алерт когда node перешла в NotReady

Node ушла в NotReady (kubelet не пингует apiserver, runtime болен) — поды на ней живут как зомби пока taint не выгонит. Kubernetes-events не уйдут в Slack по умолчанию.

Рецепт

bash
#!/usr/bin/env bash
# /etc/cron.d/kubelet-notready
# */2 * * * * root /opt/kubelet-notready.sh

CONTEXT=${KUBE_CONTEXT:-prod}

# Count nodes whose Ready condition isn't True
NOTREADY=$(kubectl --context "$CONTEXT" get nodes -o json \
  | jq '[.items[] | select(.status.conditions[] | select(.type=="Ready") | .status != "True")] | length')

if [ "${NOTREADY:-0}" -gt 0 ]; then
  NAMES=$(kubectl --context "$CONTEXT" get nodes \
    --no-headers | awk '$2!="Ready" {printf "%s,", $1}' | sed 's/,$//')
  curl -fsS "$HEARTBEAT_URL" --data "notready=$NOTREADY,nodes=$NAMES"
  exit 2
fi
echo "OK (all nodes Ready)"

То же самое в Enterno.io

Заверните в Enterno heartbeat — алерт сразу в Telegram + история «node1 уходила в NotReady 3 раза за неделю», что подскажет про hardware-проблему (а не транзиент).

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Readiness-probe внутри пода есть, но никто не видит, что LB отказался роутить трафик на новый deploy.