You can pin the pod to a specific node and pass through the USB device path and that will work. But the whole point of k8s is redundancy and workloads running anywhere.
Plus for IOT networks like zigbee and zwave, controller position in your house is important. If your server is more centrally located that may not be a concern for you.
I’ve heard of some using a USB serial over Ethernet device to relocate their controller remotely but i haven’t looked into that. Running this one off rpi for the controller just made more sense for me.
All the images I used already had x86 variants available. In fact, I was building and pushing my own arm variants for a few images to my own Nexus repository which I’ve stopped since they aren’t necessary anymore.
If you are using arm only images, you’ll need to build your own x86 variants and host them.
I created a brand new cluster from scratch and then setup the same storage pv/PVCs and namespaces.
Then I’d delete the workloads from the old cluster and apply the same yaml to the new cluster, and then update my DNS.
I used kubectx to swap between them.
Once I verified the new service was working I’d move to the next. Since the network storage was the same it was pretty seamless. If you’re using something like rook to utilize your nodes disks as network storage that would be much more difficult.
After everything was moved I powered down the old cluster and waited a few weeks before I wiped the nodes. In case I needed to power it up and reapply a service to it temporarily.
My old cluster was k8s on raspbian but my new one was all Talos. I also moved from single control plane to 3 machines control plane. (Which is completely unnecessary, but I just wanted to try it). But that had no effect on any services.