K3s
K3s is a easier to use version of kubernetes. It bundles all components of a kubernetes cluster into one single binary.
Single node setup
{
# This is required so that pod can reach the API server (running on port 6443 by default)
networking.firewall.allowedTCPPorts = [ 6443 ];
services.k3s.enable = true;
services.k3s.role = "server";
services.k3s.extraFlags = toString [
"--flannel-backend=none"
];
}
After enabling you can access you cluster through k3s kubectl
i.e. k3s kubectl cluster-info
ZFS support
k3s's builtin containerd does not support the zfs snapshotter. However it is possible to configure it to use an external containerd:
virtualisation.containerd.enable = true;
# TODO describe how to enable zfs snapshotter in containerd
services.k3s.extraFlags = toString [
"--container-runtime-endpoint unix:///run/containerd/containerd.sock"
];