Minikube vs kind vs k3s

Programación 21 de jul. de 2020

Existen varias alternativas para instalar nuestro propio clusters Kubernetes sin usar servicios en la nube como GCP, AWS o Azure.

Estas herramientas también nos pueden servir para hacer pruebas locales en nuestro ordenador y aprender a usar conceptos como CI/CD, autoescalado, etc...

minikube-kind-k3s

Minikube

Minikube es una herramienta que facilita la ejecución local de Kubernetes. Minikube ejecuta un clúster de Kubernetes de un solo nodo dentro de una máquina virtual (VM) en su ordenador para los desarrolladores puedan probar Kubernetes o desarrollar con él día a día.

Minikube es una herramienta realmente facil de usar. Para iniciar el cluster tan solo tenemos que escribir minikube start y esperar a que kubectl esté listo.

Para especificar que version de Kubernetes queremos usar, podemos utilizar la bandera --kubernetes-version

Características principales:

  • DNS
  • NodePorts
  • ConfigMaps and Secrets
  • Dashboards
  • Container Runtime: Docker, CRI-O, and containerd
  • Enabling CNI (Container Network Interface)
  • Ingress

En contra:

  • No tiene soporte multinodo
  • Se ejecuta dentro de una máquina virtual

Si eres nuevo en Kubernetes, Minikube tiene un "Dashboard" donde puedes ver todo lo que está pasando dentro de tu cluster y te ayudará a tener una visión mas completa.

kind

kind es una herramienta para ejecutar clústeres locales de Kubernetes utilizando los "nodos" del contenedor Docker.

kind fue diseñado principalmente para probar Kubernetes, pero puede usarse para desarrollo local o CI.

Comparado con Minikube, son herramientas muy similares, pero en el caso de kind y como el nombre indica, los clusters están dentro de un contenedor Docker en vez de una máquina virtual, con lo que se gana y mucho, en velocidad de arranque.

Crear un cluster en kind es muy parecido a como se hace en Minikube, kind create cluster

Para pruebas locales, en mi opinión, es una mejor opción que Minikube, ya que nos permite reutiliar nuestros contenedores Docker, además de que la velocidad de despligue de un contenedor frente a una máquina virtual es muy superior.

k3s

Si Minikube no es para nosotros y kind todavía nos resulta demasiado, podemos probar K3s que es una versión reducida de Kubernetes desarrollada por Rancher Labs. Al eliminar las funciones prescindibles (heredadas, alfa, no predeterminadas, complementos en árbol) y usar componentes livianos (por ejemplo, sqlite3 en lugar de etcd3) han logrado una reducción significativa del tamaño del binario, alrededor de 60 MB.

La aplicación está dividida en un servidor y un sercicio agente. Para una mejor organización os recomiendo poner K3s en un contenedor (por ejemplo usando rancher/k3s). Así además podemos lanzar varias instancias independientes.

Entre sus ventajas cuenta como hemos comentado que es extremadamente liviano, que permite crear multi nodos y que utiliza también contenedores Docker para el despligue de la aplicación.