So, you don't have a huge server farm with hundreds of containers, you just run a few docker-instances on a small system and want to orchestrate them with kubernetes? Then baby-kubes is the solution you need. They are the exact opposite of real life babys: They aren't greatly demanding and are easy to take care of. We looked at the baby-kubes K3s, minikube, micro8s and kind comparing them in ease of installation, applicability, configurability and the K8s-versions used. But which one is the best for you and your needs - here is the comparison:

k3s

installation

  • docker-compose environment
wget https://raw.githubusercontent.com/rancher/k3s/master/docker-compose.yml
docker-compose up --scale node=2
  • sets up 1 server container and 2 node containers in docker
  • interaction via kubectl: kubectl --kubeconfig kubeconfig.yaml <cmd>
  • removal: //docker-compose stop

specs / general info

  • maintained by rancher labs
  • optimized for ARM64/ARMv7
  • v1.13.5 at the time of review
  • certified kubernetes distribution
  • no legacy, alpha, non-default features
  • no in-tree cloud providers/storage drivers
  • docker optional
  • sqlite3 as default storage, etcd optional
  • automatic tls management
  • helm charts support
    • files on the k3s server in /var/lib/rancher/k3s/server/manifests/ are auto-deployed
    • kind: HelmChart installs helm charts from the official hub
  • containerd, coredns, flannel
  • no support for HA at the moment

review

  • easy to install, docker-compose included for easy setup of multiple nodes on one machine
  • deployment of helm charts is simple, no messing with helm/tiller, abstracted in backend
  • possible to create different clusters based on different docker-compose files
    docker membership required, no sudo

minikube

installation

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube

kvm2 driver installation:

sudo apt install libvirt-clients libvirt-daemon-system qemu-kvm
sudo yum install libvirt-daemon-kvm qemu-kvm
curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2
sudo install docker-machine-driver-kvm2 /usr/local/bin/
./minikube start --vm-driver=kvm2

specs / general info

  • maintained by kubernetes
  • no ARM support, intel/amd only
  • v1.14.0 at the time of review
  • supports several container runtimes: docker, containerd, cri-o, rkt
  • minikube dashboard to launch informational dashboard locally
  • helm not on board, but can easily be installed
  • a collection of addons is included by default and can be enabled via minikube (efk, registry, ...)
  • storage drivers are included
  • requirements: 2cpu, 2gb ram, 20gb hdd

review

  • easy to install, but due to the use of kvm there are more dependencies than just docker
  • several clusters can be created (in different KVM instances)
  • libvirt membership required, no sudo

microk8s

installation

sudo snap install microk8s --classic
sudo microk8s.start

specs / general info

  • maintained by canonical
  • snap-based
  • addons can be enabled via microk8s.enable (istio, jaeger, dashboard, ...)
  • k8s v1.14.0 at time of review
  • support for ARM architecture

review

  • only one cluster can be created
  • sudo required to install snap
  • bit more bare-bones in usage (own cmds, run everything as sudo or root, ...)
  • config files are outside of containers/vms, on the node itself, not nested inside

kind (Kubernetes IN Docker)

installation

go get -u sigs.k8s.io/kind && kind create cluster
export KUBECONFIG="$(~/go/bin/kind get kubeconfig-path --name="kind")"

specs / general info

  • part of CNCF special interest group
  • can be configured with config file to create several master and worker nodes
  • k8s v1.13.4 at the time of review
  • can be supplied with custom base and node images that can contain custom tooling and dependencies
  • uses kubeadm inside the nodes to bootstrap
  • no ARM support yet

review

  • several clusters can be created in different docker containers (per flag in binary)
  • no onboard goodies like dashboard etc.
  • currently in version 0.3.0-alpha, supposed to reach 1.0.0 with k8s 1.14
  • active development, project started end of november 2018
  • used by kubernetes for test environment (kubetest)
  • abstracts kubeadm usage, provides full-featured k8s