Kubernetes Cluster Maintenance
Prepare the Node (Cordon & Drain)
Before touching the OS, you need to tell the Kubernetes scheduler to stop sending new pods to this node and gracefully evict the ones currently running.
Cordon
Marks the node as "SchedulingDisabled".
kubectl cordon <node-name>
Drain
This is the "evacuation." It terminates the pods gracefully so they can move to other nodes (if you have them) or shut down cleanly.
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
Stop the K3s Service
Even though you've drained the pods, the K3s engine is still running. It’s cleaner to stop the service before updating the underlying OS.
sudo systemctl stop k3s
Update OS
sudo apt update && sudo apt upgrade -y
sudo reboot
Bring the Cluster Back Online
Once the VM restarts, K3s usually starts automatically (unless you've disabled the service).
Check Service Status
sudo systemctl status k3s
Uncordon the Node
This tells Kubernetes that the node is healthy and ready to host pods again.
kubectl uncordon <node-name>