32 lines
896 B
Bash
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
|