Just curious, why without recreating the cluster ?
If that’s because you would experience some downtime that you cannot tolerate, have you considered creating a HA setup or perhaps following a blue-green cutover for your cluster. IMHO you should consider clusters as entirely disposable and that includes every node and workload within them (system or otherwise). It’s really not that difficult to create high resilience and that feature will serve you well, not only when you need to swap out or upgrade a core component, but also in the normal and expected issues that occur with any non trivial deployment.
Yes the k3s-uninstall.sh but is suggest at least backup the /var/lib/rancher/k3s/server/db/ if you are using the etcd. With the fresh cluster traefik v2 comes since K3s versions 1.21.
I (Noob) was also stumbling on the same question. When i consider my cluster as disposable i wonder how people are handling the following things.
I have several helm installed services
I have persistent storage
For the cluster setup i use ansible, but only for the installation of k3s, do you think this is a good idea to use ansible to setup the helm packages as well?
As for the persistent storage, i am a bit lost. How are you guys do it, do you create your pv and pvc before (by hand) and then reference in the helm packages (most of them can)?