#!/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