image 16

Forgive me for I have not upgraded my home lab bare metal cluster for a while… in fact ever since the first deployment. We have been sitting on Kubernetes 1.27.7 for a while now.

image 5

In fact my HomeLab tinkering has been non existent for the last few months due to events season, but here we are. I was able to upgrade my virtual Talos Cluster which is running on my VMware vSphere environment.

Please let me know if you would like an update on this lab situation, we have a lot going on.

image 16

The goal of this post is to get my bare metal cluster up to the latest talos version on the servers which at the time of writing is 1.8 and then get the cluster up to 1.30.*. One thing I do know from the virtual cluster is there is no way that I could see to jump from 1.27.7 to the 1.30s.

First thing is to upgrade the server image on the nodes in the cluster. This can be achieved with the following command. This has to be repeated on each of the nodes.

image

When this is complete we can confirm the success with the following, we will also see our client here is running 1.7.6 which is not the latest but fine for now on compatibility. I will update this at some point.

image 1

The following command is how we know we cannot directly jump through versions, unless I am missing something. Even with the below I was trying to go from 1.27.7 to 1.29.

image 2

My next idea was to come down to just one bigger release, going from 1.27.7 to 1.28.6. Before just jumping into this I wanted to perform a dry run. This image below shows some of those messages of pulling down the images and then later on some more info on the dry run process, my assumption is that there was nothing saying fail so we can proceed with the actual upgrade here.

image 3

The next step was to actually perform that jump, minus the –dry-run command flag. This can be done on one node and the whole cluster will be checked against is again my understanding.

talosctl --nodes 192.168.169.211 --endpoints 192.168.169.211 --talosconfig=talosconfig upgrade-k8s --to 1.28.6

image 4

Once complete we should now be at our target version of Kubernetes.

kubectl get nodes -o wide

image 13

Before the next step, I have upgraded the talosctl client version from 1.7.6 to 1.8.3, you can find the process below. Now we should try and hop into the 1.30s again shouldn’t we?

talosctl --nodes 192.168.169.211 --endpoints 192.168.169.211 --talosconfig=talosconfig upgrade-k8s --to 1.30.3

image 14

As you can see above this was not successful, lets go to 1.29.6. You can use

--dry-run
to simulate and pre download the images.

talosctl --nodes 192.168.169.211 --endpoints 192.168.169.211 --talosconfig=talosconfig upgrade-k8s --to 1.29.6

image 17

Our next and final step for now is to get to 1.30.6, I decided to go with the stable version of .6 vs .3 from now on.

talosctl --nodes 192.168.169.211 --endpoints 192.168.169.211 --talosconfig=talosconfig upgrade-k8s --to 1.30.
6

image 18

For clarity, the reason why I am only going to 1.30.6 is because the application I need to be running is only supported on 1.30.

image 15

Upgraded talosctl

I started this journey with talosctl version 1.7.6 on my local machine. I got each of the nodes to 1.8.3 and up to Kubernetes version 1.28.6 but then I went ahead and upgraded the client talosctl on my mac using brew.

brew install siderolabs/tap/talosctl

image 12

Bloopers

I did have a side quest where one of my nodes did not upgrade cleanly.

image 8

Which then lead to

image 9

And as you can see our node 3 is not in a great place

image 10

I hard rebooted the talos-node3 system in my lab and when it came up I was able to uncorden and interact again with talosctl with the node. Second time lucky and we got this node to v1.8.0.

image 11

Leave a Reply

Your email address will not be published. Required fields are marked *