How would you explain the process of performing a zero-downtime upgrade on a bare-metal Kubernetes cluster?