My k3s server is running on 192.168.1.1 in my LAN. While I can expose the TLS endpoint to the public internet, my IP is dynamic. This doesn't play well with Kubernetes since when kubelet is connecting to the TLS endpoint, it retrieves a list of apiservers and tries to connect to them directly. So instead I add the apiserver's private IP to the loopback interface and run an ssh tunnel to forward it.
So with the unit file above, you can join a node with:
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.1.1:6443 K3S_TOKEN=mynodetoken sh -