Skip to content
  • hosting
  • server
  • servers
  • infrastructure
  • kubernetes

Choosing which Kubernetes to use

I, like you if you're at this page, have become pretty familiar with Containerization technologies. I've used Docker for a while now, and switched to Podman. Now I want to try Kubernetes again.

My history with Kubernetes

The first time I ever even remotely touched Kubernetes was when I installed Truenas Scale at the beginning of this year. It was really neat, and things worked pretty well at first. That is until I had about 15 containers running, and they'd run fine until I had to reboot. Suddenly it was taking 20-30 minutes for all the services to come up, even the ones completely unrelated to each other. Suffice it to say this left a very bad taste in my mouth.

The guy who maintained the biggest library of Truenas Scale Helm charts is also simply to abbrassive to even try to communicate with. I used AI to make fun of him and respond to him using his own attitude, i laughed, he didn't. Pretty sure he still doesn't know it was an AI response based on the issue along with his attitude in the responses, and it turns out he was wrong anyway. Don't care.

k8s - This is what Truenas Uses.

What is k8s

From my understanding k8s is the Google Kubernetes package. It's large, and slow.


k3s - k3s from what I can tell is the same Kubernetes libraries underneath, but much more optimized. It's 30MB vs 300MB, faster to launch applications, faster to migrate clusters.

Getting Started

I've chosen to try k3s, and of course my favorite Linux distro, Alpine 3.18. I've already got two cloud-init images built, one that runs docker, the other runs podman. I think the best course of action would be to start with KinD before perhaps making another cloud-init with k3s pre-installed. But this will be difficult, and I want to start out a little easier. k8s provides a KinD script so I'll start with that for now and move to k3s later once I understand all the parts that are truely needed and how I'm going to launch them.

My dashboard image already uses DIND to connect to the Docker/Podman Socket , so this seems like a good starting point to test things in a fairly non-volatile way. I created a new VM and installed my dashboard to it. Then I can ssh to the host, go into the dashboard dind container and play around.

The first thing I did was

apk add go
go install
PATH="$PATH:$(go env GOPATH)/bin"
kind create cluster

And it worked.

# docker ps

CONTAINER ID   IMAGE                                                                     COMMAND                  CREATED        STATUS        PORTS                       NAMES
04e97a13577e   ""                       18 hours ago   Up 18 hours   5000/tcp                    dashboard
1af6c39c8937   kindest/node                                                              ""                       9 hours ago    Up 9 hours>6443/tcp   kind-control-plane
5ed1c4513225   traefik:v2.10                                                             "--api.insecure=true…"   18 hours ago   Up 18 hours   80/tcp, 8080/tcp            traefik
eb32487e9b19   gitlab/gitlab-runner:alpine                                               "run --user=gitlab-r…"   18 hours ago   Up 18 hours                               gitlab-runner-10

kubectl can be accessed in the kind-control-plane.

Obviously I have a ways to go before figuring out how to get this setup. The goal is going to be getting Rancher connected up to use as a management solution.