Homelab/ansible/roles/k3s-server/files/k3s-pre-reboot.sh
2025-11-07 09:33:38 +01:00

32 lines
896 B
Bash

#!/bin/bash
# K3s pre-reboot script
# Drains the node before system reboot to migrate workloads gracefully
set -e
# Only run if k3s is active
if systemctl is-active --quiet k3s; then
NODE_NAME=$(hostname)
echo "$(date): Starting pre-reboot drain for node $NODE_NAME" | logger -t k3s-pre-reboot
# Set KUBECONFIG
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
# Drain the node (migrate pods to other nodes)
/usr/local/bin/k3s kubectl drain "$NODE_NAME" \
--ignore-daemonsets \
--delete-emptydir-data \
--force \
--timeout=300s 2>&1 | logger -t k3s-pre-reboot
if [ $? -eq 0 ]; then
echo "$(date): Node $NODE_NAME drained successfully" | logger -t k3s-pre-reboot
else
echo "$(date): Warning - Node drain failed or timed out" | logger -t k3s-pre-reboot
fi
else
echo "$(date): k3s service not active, skipping drain" | logger -t k3s-pre-reboot
fi
exit 0