DNS with K3s and systemk

January 18, 2021


In a DNS zone that I had laying around, I’ve come with the following scheme to have a working DNS with systemk. Note this does not deal with the control plane, those are routed via tailscale and I’m using IP addresses there. If naming is required here, it can be fitted in the scheme as well.

Using example.org as the domain here.


An m “subdomain” (it’s not delegated) holds all the names and IP address of the machines of interest.

Each cluster is put under a k subdomain, this is actually delegated to the machines running CoreDNS.

So we have:

moon.m.example.org.     IN      A
k3s.k.example.org.      IN      NS   moon.m.example.org.

So moon is the master machine here, and k3s is the name of the (first) cluster under k.

Now on the k3s side we only need plain kubernetes config that uses k3s.k.example.org. as the cluster domain (for both k3s and systemk).

The CoreDNS holding the k.example.org. delegation(s) can also be run under systemk, but in my current setup this isn’t done - it could even run inside the “k3s.k” cluster.

If the control plane needs naming those will be put in a c.example.org subdomain.

Also note I’m unsure if cluster-dns is that important here, as we don’t support K8S services, but it may be useful for stateful sets and pod naming?

k8s  dns  systemk