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=2sets 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-deployedkind: HelmChartinstalls helm charts from the official hubcontainerd, 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.0at the time of review- supports several container runtimes: docker, containerd, cri-o, rkt
minikube dashboardto 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.0at 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.4at the time of review- can be supplied with custom base and node images that can contain custom tooling and dependencies
- uses
kubeadminside 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 reach1.0.0withk8s 1.14 - active development, project started end of november 2018
- used by kubernetes for test environment (kubetest)
- abstracts kubeadm usage, provides full-featured k8s