#1785100296
[ homelab | k8s | backup ]
I am still working on a hard drive mount that won’t melt, but in the meantime the software side is ready. To nobody’s surprise, even this backup server is running Talos Linux managed by Omni. It is a two-node cluster. One worker node is the ZimaBlade that has the hard drive attached, and the one control plane node is a virtual one that is running on my other Omni cluster. You can run Talos as just a normal container, but not when managed by Omni. So it is actually a full QEMU virtual machine, but still running as a pod. Working with this virtual control plane means that the worker node is 100% stateless (except for the backup drive, of course). This helps make my offsite backup extra robust, because I will not always have physical access to the worker.
Because the worker and control plane are not on the same network, everything will need to be networked through NetBird. Luckily, this is easily done with the System Extensions of Talos. So NetBird is running as an OS process, which allows Flannel and Kubelet to talk over the virtual network. So the nodes can be anywhere, and things will just work, even behind symmetric NAT where KubeSpan won’t work. In NetBird, the Bunker cluster (that is what I am calling this small backup cluster) is fully isolated and has only connections between the nodes and a one-way connection from the worker node to my NAS (pull-based backups).
Next, what is running on the cluster. To start, my usual monitoring stack, but no storage of the metrics this time. I am running the Victoria metrics agent to forward all metrics to my other Talos cluster that has a storage server running. For the backup itself, I am running a basic cronjob with rsnapshot, a wrapper tool on to of Rsync that uses Linux hard links for its ‘incremental’ backups. The folder structure looks like full-sized backups each day, but the hard links keep the storage usage low. Encryption is provided at the drive level using LUKS2. Again this just uses basic Linux components, so if I need to I can just plug the drive into my Linux laptop and recover all my files without any special tools. The transfer is pull based happens over SSH with read only permission. This makes it so my data stays safe (at least 1 copy) even if one of my servers gets compromised. And last, I am running a small DaemonSet with hdparm that makes sure the drive is configured correctly to spin down when idle. The ZimaBlade is passively cooled so the system is fully silent once the disk spins down.








