Minikube: lo mejor de Kubernetes con el mínimo esfuerzo
¿Por qué elegir algo simple cuando puedes elegir algo aún más simple? Este es el lema de la herramienta Minikube, con la que puedes ejecutar Kubernetes localmente en tu propio ordenador.
Los contenedores han revolucionado y cambiado buena parte de las TI, especialmente en lo relativo al desarrollo de software. Gracias a los contenedores, las aplicaciones pueden ejecutarse de forma independiente y paralela en un entorno virtual especialmente diseñado. Para orquestar los contenedores y sus procesos, se requieren herramientas como Kubernetes.
Esta herramienta de orquestación está consolidándose como una solución integral, porque no solo administra aplicaciones, servicios y recursos, además de configurar y conectar en red sus dependencias, sino que también organiza la infraestructura de máquinas virtuales existente. Al mismo tiempo, Kubernetes ofrece procesos de control que monitorean el estado de los nodos, pods y contenedores disponibles en el clúster.
Minikube es una distribución reducida de Kubernetes que permite alcanzar el máximo rendimiento funcional de esta herramienta con el mínimo esfuerzo. Esto no solo es interesante para quienes se están iniciando en el uso de contenedores, sino también, y sobre todo, en el mundo del edge computing y el del Internet de las cosas. En este artículo, descubrirás qué es Minikube, para qué se utiliza esta herramienta y cómo puede prescindir de grandes infraestructuras.
Minikube: el modelo minimalista de la gestión de contenedores
Minikube es la solución ideal para pequeños proyectos basados en contenedores. Te permite, por ejemplo, configurar un clúster de Kubernetes en privado sin tener que trabajar directamente con todo un servidor o una nube. Al contrario que Kubernetes, Minikube prescinde de grandes infraestructuras y puede configurar clústeres fácilmente de forma local.
Un ordenador y un clúster con un solo nodo: este es el espacio que necesita Minikube. Este requisito mínimo es especialmente adecuado para pequeños proyectos privados, que los desarrolladores de software ya pueden implementar fácilmente gracias a Minikube. No hace falta un servidor ni una nube, ya que el clúster de Kubernetes simplemente se ejecuta en el localhost. Minikube funciona de forma predeterminada con VirtualBox como software de virtualización, por lo que no solo se puede utilizar en Linux, sino también en Windows o macOS. Sin embargo, si prefieres trabajar sin VirtualBox, Minikube también consigue expandirse de manera que no requiera este software.
Características de Minikube
La simplicidad de Minikube también se nota en sus funciones. La herramienta es compatible con las siguientes funciones de Kubernetes:
- DNS
- NodePorts
- ConfigMaps y Secrets
- Dashboards
- Entornos de tiempo de ejecución de contenedores: Docker o alternativas a Docker como rkt, CRI-O o containerd
- Compatibilidad con CNI (Container Network Interface)
- Ingress
Si ya estás familiarizado con las funciones de Kubernetes, Minikube te parecerá muy limitado. Sin embargo, es posible ampliarlo con otras funciones, como el túnel de Minikube, que funciona como un LoadBalancer mediante el control de acceso basado en roles (RBAC), dashboards, multiclústeres y muchos otros estándares de Kubernetes. También existe gran variedad de complementos, como la compatibilidad con GPU para el análisis automático de errores o la alineación en el ámbito del aprendizaje automático.
Al igual que su hermano mayor, Kubernetes, Minikube se mantiene vivo gracias a su comunidad. Muchos nuevos colaboradores se van sumando a su desarrollo sin descanso, mejorando cada vez más la herramienta. Además, en cuanto Kubernetes se actualiza, Minikube también pasa a la nueva versión, por ejemplo, si se ha publicado un catálogo de soluciones que los usuarios pueden simplemente consultar cuando tienen algún problema ya conocido.
¿Cómo funciona Minikube?
Rara vez el nombre de una herramienta informática ha sido más acertado que el de Minikube. Con esta aplicación, las numerosas posibilidades de Kubernetes se minimizan para caber en un PC u ordenador portátil. Ante todo, la funcionalidad básica está garantizada, y con solo unos pocos comandos de instalación, Minikube se convierte en un clúster de Kubernetes completamente funcional que puede usarse no solo como plataforma de formación, sino también para llevar a cabo tareas de desarrollo rutinarias.
Minikube puede funcionar con diversos hipervisores como sistema de virtualización. Si se instala un hipervisor en el sistema (como VirtualBox, mencionado más arriba), Minikube configura automáticamente la máquina virtual. Es más, para dar instrucciones al clúster de Kubernetes, lo único que se necesita es la línea de comandos estándar kubectl.
Una vez instalados todos los componentes, puede iniciarse Minikube. Se asigna de forma predeterminada 1 GB de memoria a la máquina virtual y se crea un clúster de Kubernetes, que ya puede configurarse a través de kubectl. Una primera medida de rigor podría ser, por ejemplo, cambiar la memoria asignada según sea necesario.
En este punto, si ya sueles trabajar con contenedores, el terreno te será familiar. Con la ayuda de los espacios de nombres, los clústeres físicos se dividen en varias áreas. Para obtener una mejor descripción general de los recursos, puedes crear tus propios espacios de nombres con kubectl. Por otra parte, mediante el uso de complementos, las funciones de Minikube pueden volverse tan diversas como las de cualquier otro sistema de contenedores.
Ámbitos de aplicación de Minikube
El ámbito de uso más importante de Minikube es el de adquirir experiencia práctica con Kubernetes. Los grandes clústeres no siempre están disponibles de forma gratuita, y Minikube ofrece una forma rápida de probar la herramienta o comprobar si una aplicación funciona. El propio Kubernetes proporciona un tutorial detallado de Minikube, por lo que no se requiere experiencia previa para empezar a utilizarlo. Minikube también puede resultar un buen ámbito de aprendizaje para los usuarios que ya están familiarizados con Kubernetes, ya que permite experimentar constantemente.
Minikube es por tanto un banco de pruebas de todas las funciones de Kubernetes. Ambas herramientas son de código abierto y tienen la licencia Apache 2.0. Los clústeres y sus complementos se pueden evaluar, activar, desactivar y extender eficazmente. Estos últimos pueden desarrollarse todavía más mediante el sencillo método de ensayo y error, lo que genera un ecosistema de Kubernetes aún más amplio.
Al margen de realizar pruebas fácilmente y desarrollar pequeños proyectos de software privados, Minikube también puede usarse para tecnologías externas; entre otras cosas, como soporte experimental para las GPU NVIDIA. Por ello, la herramienta es útil para desarrolladores de diversos ámbitos, desde los de videojuegos hasta los de algoritmos de aprendizaje automático.
Minikube también está dirigido a administradores de TI. Los CIO normalmente no tienen tiempo para desarrollar, probar o aprender a utilizar nuevas herramientas informáticas; algo que, paradójicamente, resulta imprescindible debido a la velocidad con la que estas evolucionan. No hay forma más fácil de familiarizarse con Kubernetes que mantenerse al día con Minikube. Incluso existe una función de Minikube para el dashboard de Kubernetes que ofrece un resumen muy detallado del comportamiento de la aplicación en el clúster, incluidas las métricas de uso. Además, Minikube es una herramienta perfecta para presentar Kubernetes o mostrar sus funciones, que se puede ejecutar localmente.
Una pequeña introducción al gran mundo de Minikube
Para instalar Minikube basta con disponer de un sistema de contenedores, como Docker, o un entorno con una máquina virtual y la interfaz de comando nativa kubectl. Las instrucciones para instalar Minikube están incluidas en la documentación oficial de Kubernetes. Luego, solo hay que ejecutar el primer comando en kubectl:
minikube start
Como cabe esperar, los requisitos en el ordenador portátil o de escritorio son muy asequibles:
- 2 CPU o más
- 2 GB de memoria libre
- 20 GB de espacio libre en el disco duro
- Conexión a Internet
- Sistema de gestión de contenedores o máquina virtual
En cuanto se instala kubectl, puede nombrarse el nuevo clúster:
kubectl get po -A
Minikube agrupa el panel de Kubernetes y permite acceder fácilmente al nuevo entorno.
minikube dashboard
Entonces, puedes comenzar con las aplicaciones de implementación. Con el siguiente comando, se crea una muestra de implementación que se pone a disposición en el puerto 8080:
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
Con estos comandos, utilizamos el entorno virtual predefinido echoserver. En este punto, en principio, también puedes utilizar cualquier otro entorno virtual, incluido el tuyo.
El proceso puede durar unos segundos. Al terminar, se puede llamar a la implementación con el siguiente comando:
kubectl get services hello-minikube
La forma más fácil de acceder a este servicio es hacer que Minikube inicie un navegador web:
minikube service hello-minikube
Alternativamente, también se puede usar kubectl para redireccionar al puerto:
kubectl port-forward service/hello-minikube 7080:8080
Finalmente, existen los siguientes comandos de administración generales para los clústeres:
Para pausar Kubernetes sin impactar en las aplicaciones implementadas:
minikube pause
Para detener el clúster:
minikube stop
Para aumentar el límite de memoria estándar (requiere reiniciar):
minikube config set memory 16384
Para buscar servicios de Kubernetes:
minikube addons list
Para crear un segundo clúster con una versión anterior de Kubernetes:
minikube start -p aged --kubernetes-version=v1.16.1
Para eliminar todos los clústeres de Minikube:
minikube delete --all
¿Quieres saber más de Kubernetes, el hermano mayor de Minikube? En nuestro completo tutorial de Kubernetes, encontrarás información práctica sobre este tema.