Installing k3s with some configuration

Tags: #kubernetes

5 July 2023


TLDR

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s - --disable=traefik

Default k3s Installation

I used to install k3s for development/testing purpose on a remote machine and I use to do it very often say multiple times a day. I used to use the following script in my mind and to an extend, I had this ready on my fingertips to be invoked without looking at docs. This was working great but this has a downside.

Occasionally, I used to get this error message.

$ kubectl get pods 
WARN[0000] Unable to read /etc/rancher/k3s/k3s.yaml, please start server with --write-kubeconfig-mode to modify kube config permissions 
error: error loading config file "/etc/rancher/k3s/k3s.yaml": open /etc/rancher/k3s/k3s.yaml: permission denied

I used to solve this problem by invoking the following command.

chmod 644 /etc/rancher/k3s/k3s.yaml
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

And the problem was that, I needed to do this every time I ssh into the system.

Installing with 644

I looked at the docs and found my solution. I moved to this script and afterwards I didn't encountered the error.

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sudo sh

You can avoid sudo to be more secure but since this is an ephemeral machine, I tend to care less about security on this machine and the main intention is to get things done.

Disabling traefik

If you've used k3s for a while then you would have noticed that k3s by default installs traefik as an ingress controller. I almost never use this but it's still there in the cluster and this is not required. You can disable this using the appropriate flag.

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" sh -s - --disable=traefik