¿Qué es MicroK8s?

14min

Nos centramos en MicroK8s, una distribución de Kubernetes que nos permite una facilidad mayor para la instalación y el trabajo con el orquestador de contenedores. Todo ello sin renunciar a las muchas ventajas que nos ofrece el ecosistema de Kubernetes, disfrutando de la misma versatilidad y ventajas. En este post te vamos explicar en qué consiste y cómo funciona MicroK8s, junto con una guía para que puedas instalarlo en tu ordenador de trabajo o servidores.

Índice

¿Qué es MicroK8s?

MicroK8s se define como una distribución de Kubernetes upstream. Es, por tanto, lo mismo que obtendrías si instalases Kubernetes por la vía tradicional, solo que lo encuentras empaquetado y optimizado para permitir una mayor facilidad de puesta en marcha y agilidad de despliegue.

El proceso para instalar MicroK8s es extremadamente sencillo, ya que, a diferencia de otras distribuciones, se instala con un único comando. Con ello consigues tener el clúster operativo en minutos, sin necesidad de gastar tiempo en hacer  configuraciones o gestionar dependencias.

Esta distribución de Kubernetes está mantenida por Canonical, que es la empresa que se dedica principalmente a mantener el sistema operativo Ubuntu. Gracias a MicroK8s han conseguido aportar una pieza que faltaba en el ecosistema de este orquestador y que permite a desarrolladores y equipos DevOps trabajar con un clúster sin tener padecer las complejidades del sistema y sin tener que usar una compleja infraestructura.

Diferencias entre MicroK8s y Kubernetes tradicional

Cuando hablamos de MicroK8s estamos hablando de Kubernetes, sin más, ya que es básicamente una forma de conseguir instalar y usar el orquestador de contenedores. Sin embargo, sí que existen diferencias importantes que debes conocer en lo relativo al enfoque y experiencia de uso.

Lo más importante es la instalación, que se hace mucho más sencilla con MicroK8s, usando un único paquete y un proceso tan elemental como lanzar unos comandos. Pero también es destacable que hace un menor consumo de recursos, lo que permite usar MicroK8s en máquinas con  recursos limitados, incluso con un único ordenador o servidor.

Además también facilita las tareas de administración, lo que resulta importante para el día a día. No obstante, los casos de uso son distintos. Mientras que Kubernetes tradicional está más orientado a grandes clústeres y sistemas complejos en producción la parcela de MicroK8s está más enfocada al área de desarrollo y el mantenimiento de clústeres ligeros.

Principales características de MicroK8s

Ahora vamos a describir de manera más detallada algunas de las características de MicroK8s que deberías conocer y tener en cuenta si lo piensas usar.

Kubernetes ligero y de instalación rápida

Esto ya lo hemos comentado: MicroK8s es un sistema pensado para que sea ligero y fácil de instalar. Gracias a su facilidad de uso permite levantar un clúster funcional en cuestión de minutos y tener Kubernetes integrado y configurado para funcionar de forma inmediata. Esto reduce considerablemente la barrera de entrada a Kubernetes y la complejidad inicial que presenta.

Arquitectura modular basada en add-ons

Luego también destaca su arquitectura modular, donde dispones de add-ons para poder ampliar la funcionalidad y habilitar componentes extra que puedas necesitar. Entre ellos dispones de componentes como DNS, Ingress, métricas, almacenamiento, dashboard, etc. y la mayor parte de las veces instalarlos es cuestión de lanzar un solo comando.

Alta disponibilidad y escalabilidad sencilla

Lo bueno es que nos ofrece las mismas ventajas de Kubernetes en los despliegues, como la alta disponibilidad y la escalabilidad, pero de una manera sencilla. Además todo lo haces desde un sistema con un solo equipo, con clústeres multinodo, donde añadir o eliminar nodos es un proceso bastante simple.

Seguridad integrada y actualizaciones automáticas

A la hora de administrar MicroK8s también es importante la seguridad que nos brinda y la posibilidad de realizar actualizaciones automáticas, lo que reduce el esfuerzo de mantenimiento.

Compatibilidad total con Kubernetes upstream

MicroK8s es Kubernetes upstream, lo que quiere decir que no introduce APIs propias ni comportamientos no estándar. Se mantiene todo exactamente igual a lo que consideraríamos Kubernetes nativo, sin modificaciones. Solo son configuraciones específicas y un empaquetado ligero de fácil instalación.

En resumen, el hecho de ser Kubernetes upstream nos indica que respeta los estándares del orquestador de contenedores, lo que garantiza portabilidad total de los despliegues.

¿Para qué sirve MicroK8s?

Puedes usar MicroK8s en cualquier situación en la que podrías trabajar con Kubernetes, en esto no hay mucha diferencia, sin embargo por sus características sí que hay casos de uso en los que encaja mejor.

Desarrollo y pruebas locales de aplicaciones con Kubernetes

Para empezar, MicroK8s representa una solución ideal para ejecutar Kubernetes en local. Esto permite a los desarrolladores probar despliegues, servicios e Ingress sin depender de entornos cloud o complejidades operacionales.

Creación de clústeres ligeros para entornos de staging

MicroK8s se usa mucho para entornos de staging porque permite montar entornos de preproducción fieles a producción, pero con menor coste y complejidad operativa.

Aprendizaje y formación práctica en Kubernetes

Dada la facilidad de uso y la disminución de la complejidad inicial, hace que MicroK8s resulte perfecto para el aprendizaje de Kubernetes. Es por ello que se usa mucho en formación, incluso cuando somos autodidactas.

Implementación de Kubernetes en entornos edge e IoT

También es ideal para entornos de edge computing o IoT, porque consume menos recursos, haciendo que puedas usar Kubernetes y sacarle partido sin requerir complejas infraestructuras.

Prototipado rápido de microservicios y contenedores

También resulta ideal usar MicroK8s para el prototipado de aplicaciones donde se trabaja sobre arquitecturas de microservicios, ya que nos permite validar diseños y flujos de una manera sencilla y poder dar el salto a clústeres mayores en Kubernetes tradicional si más adelante es necesario.

Ventajas de MicroK8s frente a otras distribuciones de Kubernetes

MicroK8s no es la única distribución de Kubernetes que hay en el mercado. Hay varias que más adelante vamos a estudiar a modo de comparativa. De momento, a modo de resumen, vamos a ver varios motivos de su popularidad.

Instalación rápida y sencilla con bajo consumo de recursos

Dentro del panorama de distribuciones de Kubernetes, MicroK8s destaca por su simplicidad extrema, tanto en la instalación como en la operación diaria. También es adecuada para máquinas con recursos limitados, lo que la hace ideal en muchos escenarios.

Compatibilidad total con Kubernetes upstream

Como hemos dicho antes, utilizando MicroK8s tienes la tranquilidad de estar apoyado en Kubernetes upstream, esto es, muy cercano a lo nativo, sin vendor lock-in ni adaptaciones específicas que dificulten la migración o cambien la línea de aprendizaje.

Arquitectura modular mediante add-ons integrados

De por si, MicroK8s te ofrece lo mínimo para funcionar, pero no se queda corto si quieres funcionalidades avanzadas gracias a sus add-ons. Esto hace que pueda ser útil para instalaciones mínimas pero también para otras más potentes, siempre aportando su fácil mantenimiento.

Requisitos previos para instalar MicroK8s

Vamos a comenzar ya una parte más práctica en la cual queremos abordar los pasos de instalación de MicroK8s. Comenzaremos por analizar cuáles son los requisitos previos para poder disponer de MicroK8s en nuestros equipos.

Sistema operativo compatible y actualizado

El entorno más natural de funcionamiento de MicroK8s es Linux, aunque también lo podemos correr sin mayores fricciones en máquinas con MacOS. En otros sistemas operativos como Windows debemos ejecutarlo mediante máquinas virtuales. En todo caso, es importante contar con un sistema actualizado y últimas versiones para evitar incompatibilidades.

Recursos mínimos de hardware (CPU, RAM y almacenamiento)

Ten en cuenta que MicroK8s hace uso de virtualización y, aunque el uso de recursos sea menor que en otros sistemas, sigue necesitando cierta capacidad en la máquina donde vamos a correr el servicio.

En un entorno mínimo puede funcionar con máquinas con 1 solo core y un 1 GB de RAM. Sin embargo, para poder asumir cargas de trabajo normales se recomienda contar con procesadores de 2 cores y un mínimo de 4 GB de RAM. Espacio en disco depende de las imágenes y datos que vayas a alojar pero al menos deberías tener 20 GB de espacio en disco.

Permisos de administrador y acceso a red

Para instalarlo necesitaremos también permisos de administrador y, por supuesto acceso a Internet para poder descargar imágenes y otros componentes necesarios.

¿Cómo instalar MicroK8s?

Como hemos dicho ya, una de las ventajas de MicroK8s es su fácil instalación, ya que lo puedes hacer por medio de comandos, que pueden cambiar un poco dependiendo del sistema operativo o del gestor de paquetes que estés utilizando.

Instalación de MicroK8s en Linux (Ubuntu)

Si estás en Ubuntu la instalación de MicroK8s se realiza de manera muy natural a través de snap, el sistema de paquetes más moderno de Canonical. Lo haces con este comando.

sudo snap install microk8s --classic

Una vez instalado, muchos administradores prefieren añadir el usuario actual al grupo «microk8s», lo que permite mayor agilidad de administración, al no tener que usar sudo constantemente:

sudo usermod -a -G microk8s $USER
newgrp microk8s

Finalmente, puedes comprobar que el clúster está listo para trabajar consultando su estado:

microk8s status --wait-ready

Instalación de MicroK8s en otras distribuciones Linux

Si estás en alguna distribución compatible con snapd el proceso recomendado sería muy similar. Primero instalas snapd y luego desde el gestor de paquetes realizas los pasos que hemos mencionado anteriormente.

Aparte de todas las distribuciones basadas en Debian, puedes instalar snapd en la mayoría de los sistemas Linux, incluso en otras familias de distribuciones como las de RHEL, Rocky Linux, AlmaLinux, Fedora, OpenSUSE, etc.

Instalación de MicroK8s en Windows

Si estás en Windows el proceso para instalar MicroK8s no es tan natural y necesitarás basarte en algún sistema de virtualización.

Para este caso la opción más sencilla sería usar Multipass (que también es una herramienta creada por Canonical). Gracias a Multipass podemos tener un Ubuntu en cualquier ordenador Linux de una manera cómoda y sencilla. Luego ya se trataría de instalar MicroK8s como hemos descrito anteriormente.

Otra alternativa muy viable es instalar WSL2, que también se integra muy bien con el propio Windows y permite virtualizar un Ubuntu de una manera sencilla.

Instalación de MicroK8s en macOS

Por último nos queda macOS, donde podemos usar MicroK8s de manera bastante natural, ya que el propio macOS es un sistema Linux-like. Para poder hacer la instalación usaremos el gestor de paquetes de Mac: Homebrew.

brew install ubuntu/microk8s/microk8s

Luego tenemos que instalar MicroK8s con el comando siguiente:

microk8s install

Y chequear el estado como hemos visto también antes.

microk8s status --wait-ready

Configuración inicial de MicroK8s

Una vez que hemos instalado MicroK8s tendremos que realizar una configuración básica siguiendo los puntos que detallamos a continuación.

Habilitar add-ons esenciales (DNS, Storage, Ingress)

MicroK8s puede usarse tal cual pero hay algunos add-ons que podrías necesitar y que se activan bajo demanda. Los más habituales en cualquier son los dedicados al servidor de DNS, Storage o Ingress.

Instalar los add-ons es tan sencillo como lanzar los correspondientes comandos:

microk8s enable dns

microk8s enable storage

microk8s enable ingress

Configuración de kubectl en MicroK8s

La instalación básica de MicroK8s incluye su propia versión de kubectl, que usaremos mediante comandos con microk8s delante:

microk8s kubectl get nodes

Esta versión de kubectl es como es un kubectl estándar (Kubernetes upstream) por lo que puedes aplicarla con todo el conocimiento que ya dispones.

Si quieres, puedes hacer que este kubectl sea el predeterminado en tu línea de comandos creando un alias:

alias mkctl='microk8s kubectl'

Esto hace que cada vez que escribas «mkctl» sería como si escribieras «microk8s kubectl».

Gestión de usuarios y permisos

MicroK8s utiliza los mecanismos estándar para la gestión de usuarios y permisos de Kubernetes, por lo que no hay nada extra que debas aprender para poder trabajar con esta distribución.

Te recomendamos leer la documentación de How To Guides de MicroK8s para encontrar detalles de todos los procesos, si no tienes idea exacta de cómo administrar Kubernetes.

Acceso al dashboard de Kubernetes

Otra de las utilidades esenciales disponibles en Microk8 es el dashboard de Kubernetes. Lo tienes que habilitar con el correspondiente add-on:

microk8s enable dashboard

El acceso suele realizarse a través de un proxy o mediante un token de autenticación, que generas mediante el comando siguiente:

microk8s kubectl create token default

Para activar el proxy tienes que hacer este otro comando:

microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443

Luego tienes disponible el dashboard en esta URL: https://127.0.0.1:10443

Buenas prácticas al usar MicroK8s

No queremos acabar si abordar algunas prácticas recomendables para usar MicroK8s de modo que puedas evitar problemas a medio y largo plazo.

Gestión eficiente de recursos

Si quieres usar MicroK8s en entornos locales o edge es importante limitar los recursos que usa el sistema. Una recomendación sería limitar recursos en los pods (requests y limits) y deshabilitar add-ons no utilizados.

Seguridad y control de accesos

Para mantener la seguridad y el control de accesos te recomendamos activar RBAC y asegurarte de que MicroK8s esté actualizado, aplicando los correspondientes parches de seguridad.

Copias de seguridad y recuperación

Si piensas usar MicroK8s en producción es fundamental mantener copias de seguridad del sistema. No te olvides de hacer el respaldo de manifiestos y configuraciones, así como gestionar las copias de los volúmenes persistentes.

Otra recomendación importante siempre con los procesos de backup es hacer simulacros de los procedimientos de restauración, para no llevarse sorpresas.

Actualizaciones y mantenimiento del clúster

El propio MicroK8s ofrece mecanismos para las actualizaciones mediante snap, así que manteniendo el sistema al día estarás manteniendo MicroK8s. No obstante, te recomendamos probar las versiones nuevas en entornos de prueba antes de aplicarlas en producción.

MicroK8s vs. otras alternativas

Ya para acabar queremos analizar MicroK8s de manera comparativa frente a otras soluciones con las que compite.

MicroK8s vs. Minikube

Posiblemente conozcas Minikube y te preguntes si es lo mismo que MicroK8s. En realidad no lo es, ya que Minikube no es una distribución de Kubernetes como MicroK8s. En realidad es una herramienta para desarrollo local, realizada por el propio equipo de Kubernetes.

Por tanto, usarás Minikube si quieres desarrollar solamente, mientras que MicroK8s ofrece continuidad entre desarrollo y producción ligera.

MicroK8s vs. Kind

Kind tampoco es una distribución de Kubernetes como pueda serlo MicroK8s. En realidad es un sistema que ejecuta Kubernetes en contenedores Docker, pensado sobre todo para CI/CD. Realmente Kind crea contenedores Docker que simulan nodos de K8s y MicroK8s sería un clúster más realista, con servicios persistentes y add-ons integrados.

En resumen, Kind es excelente para pruebas automatizadas, mientras que MicroK8s, para uso diario y entornos persistentes.

MicroK8s vs. K3s

En este caso, K3s, sí que estamos ante una distribución de Kubernetes, aunque sería una extremadamente ligera, enfocada en edge e IoT. K3s consigue empaquetar todo Kubernetes en un solo binario, eliminando todas las dependencias que no son esenciales.

Aún así, ambas distribuciones son Kubernetes upstream, compatible 100% con APIs del orquestador. Sin embargo, MicroK8s es mucho más completo.

Fernán García de Zúñiga

Productos relacionados: