I recently learned about a CoreOS-specific operator for that purpose: https://github.com/coreos/container-linux-update-operator. In standard CoreOS installations, once system updates are installed, the node is automatically rebooted using a semaphore. Instead, this uses the Kubernetes API to drain the pods from the node for a clean shutdown.
Kured has a feature to stop reboots if there are triggered Prometheus alerts; that’s a nice touch.