¿Por qué elegir algo simple cuando puedes elegir algo aún más simple? Este es el lema de la he­rra­mie­n­ta Minikube, con la que puedes ejecutar Ku­be­r­ne­tes lo­ca­l­me­n­te en tu propio ordenador.

Los co­n­te­ne­do­res han re­vo­lu­cio­na­do y cambiado buena parte de las TI, es­pe­cia­l­me­n­te en lo relativo al de­sa­rro­llo de software. Gracias a los co­n­te­ne­do­res, las apli­ca­cio­nes pueden eje­cu­tar­se de forma in­de­pe­n­die­n­te y paralela en un entorno virtual es­pe­cia­l­me­n­te diseñado. Para orquestar los co­n­te­ne­do­res y sus procesos, se requieren he­rra­mie­n­tas como Ku­be­r­ne­tes.

Esta he­rra­mie­n­ta de or­que­s­ta­ción está co­n­so­li­dá­n­do­se como una solución integral, porque no solo ad­mi­ni­s­tra apli­ca­cio­nes, servicios y recursos, además de co­n­fi­gu­rar y conectar en red sus de­pe­n­de­n­cias, sino que también organiza la in­frae­s­tru­c­tu­ra de máquinas virtuales existente. Al mismo tiempo, Ku­be­r­ne­tes ofrece procesos de control que mo­ni­to­rean el estado de los nodos, pods y co­n­te­ne­do­res di­s­po­ni­bles en el clúster.

Minikube es una di­s­tri­bu­ción reducida de Ku­be­r­ne­tes que permite alcanzar el máximo re­n­di­mie­n­to funcional de esta he­rra­mie­n­ta con el mínimo esfuerzo. Esto no solo es in­te­re­sa­n­te para quienes se están iniciando en el uso de co­n­te­ne­do­res, sino también, y sobre todo, en el mundo del edge computing y el del Internet de las cosas. En este artículo, de­s­cu­bri­rás qué es Minikube, para qué se utiliza esta he­rra­mie­n­ta y cómo puede pre­s­ci­n­dir de grandes in­frae­s­tru­c­tu­ras.

Minikube: el modelo mi­ni­ma­li­s­ta de la gestión de co­n­te­ne­do­res

Minikube es la solución ideal para pequeños proyectos basados ​​en co­n­te­ne­do­res. Te permite, por ejemplo, co­n­fi­gu­rar un clúster de Ku­be­r­ne­tes en privado sin tener que trabajar di­re­c­ta­me­n­te con todo un servidor o una nube. Al contrario que Ku­be­r­ne­tes, Minikube prescinde de grandes in­frae­s­tru­c­tu­ras y puede co­n­fi­gu­rar clústeres fá­ci­l­me­n­te 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 es­pe­cia­l­me­n­te adecuado para pequeños proyectos privados, que los de­sa­rro­lla­do­res de software ya pueden im­ple­me­n­tar fá­ci­l­me­n­te gracias a Minikube. No hace falta un servidor ni una nube, ya que el clúster de Ku­be­r­ne­tes si­m­ple­me­n­te se ejecuta en el localhost. Minikube funciona de forma pre­de­te­r­mi­na­da con Vi­r­tua­l­Box como software de vi­r­tua­li­za­ción, por lo que no solo se puede utilizar en Linux, sino también en Windows o macOS. Sin embargo, si prefieres trabajar sin Vi­r­tua­l­Box, Minikube también consigue ex­pa­n­di­r­se de manera que no requiera este software.

Ca­ra­c­te­rí­s­ti­cas de Minikube

La si­m­pli­ci­dad de Minikube también se nota en sus funciones. La he­rra­mie­n­ta es co­m­pa­ti­ble con las si­guie­n­tes funciones de Ku­be­r­ne­tes:

Si ya estás fa­mi­lia­ri­za­do con las funciones de Ku­be­r­ne­tes, Minikube te parecerá muy limitado. Sin embargo, es posible ampliarlo con otras funciones, como el túnel de Minikube, que funciona como un Loa­d­Ba­la­n­cer mediante el control de acceso basado en roles (RBAC), da­sh­boa­r­ds, mu­l­ti­clú­s­te­res y muchos otros es­tá­n­da­res de Ku­be­r­ne­tes. También existe gran variedad de co­m­ple­me­n­tos, como la co­m­pa­ti­bi­li­dad con GPU para el análisis au­to­má­ti­co de errores o la ali­nea­ción en el ámbito del apre­n­di­za­je au­to­má­ti­co.

Al igual que su hermano mayor, Ku­be­r­ne­tes, Minikube se mantiene vivo gracias a su comunidad. Muchos nuevos co­la­bo­ra­do­res se van sumando a su de­sa­rro­llo sin descanso, mejorando cada vez más la he­rra­mie­n­ta. Además, en cuanto Ku­be­r­ne­tes se actualiza, Minikube también pasa a la nueva versión, por ejemplo, si se ha publicado un catálogo de so­lu­cio­nes que los usuarios pueden si­m­ple­me­n­te consultar cuando tienen algún problema ya conocido.

¿Cómo funciona Minikube?

Rara vez el nombre de una he­rra­mie­n­ta in­fo­r­má­ti­ca ha sido más acertado que el de Minikube. Con esta apli­ca­ción, las numerosas po­si­bi­li­da­des de Ku­be­r­ne­tes se minimizan para caber en un PC u ordenador portátil. Ante todo, la fu­n­cio­na­li­dad básica está ga­ra­n­ti­za­da, y con solo unos pocos comandos de in­s­ta­la­ción, Minikube se convierte en un clúster de Ku­be­r­ne­tes co­m­ple­ta­me­n­te funcional que puede usarse no solo como pla­ta­fo­r­ma de formación, sino también para llevar a cabo tareas de de­sa­rro­llo ru­ti­na­rias.

Minikube puede funcionar con diversos hi­pe­r­vi­so­res como sistema de vi­r­tua­li­za­ción. Si se instala un hi­pe­r­vi­sor en el sistema (como Vi­r­tua­l­Box, me­n­cio­na­do más arriba), Minikube configura au­to­má­ti­ca­me­n­te la máquina virtual. Es más, para dar in­s­tru­c­cio­nes al clúster de Ku­be­r­ne­tes, lo único que se necesita es la línea de comandos estándar kubectl.

Una vez in­s­ta­la­dos todos los co­m­po­ne­n­tes, puede iniciarse Minikube. Se asigna de forma pre­de­te­r­mi­na­da 1 GB de memoria a la máquina virtual y se crea un clúster de Ku­be­r­ne­tes, que ya puede co­n­fi­gu­rar­se 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 co­n­te­ne­do­res, 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 de­s­cri­p­ción general de los recursos, puedes crear tus propios espacios de nombres con kubectl. Por otra parte, mediante el uso de co­m­ple­me­n­tos, las funciones de Minikube pueden volverse tan diversas como las de cualquier otro sistema de co­n­te­ne­do­res.

Ámbitos de apli­ca­ción de Minikube

El ámbito de uso más im­po­r­ta­n­te de Minikube es el de adquirir ex­pe­rie­n­cia práctica con Ku­be­r­ne­tes. Los grandes clústeres no siempre están di­s­po­ni­bles de forma gratuita, y Minikube ofrece una forma rápida de probar la he­rra­mie­n­ta o comprobar si una apli­ca­ción funciona. El propio Ku­be­r­ne­tes pro­po­r­cio­na un tutorial detallado de Minikube, por lo que no se requiere ex­pe­rie­n­cia previa para empezar a uti­li­zar­lo. Minikube también puede resultar un buen ámbito de apre­n­di­za­je para los usuarios que ya están fa­mi­lia­ri­za­dos con Ku­be­r­ne­tes, ya que permite ex­pe­ri­me­n­tar co­n­s­ta­n­te­me­n­te.

Minikube es por tanto un banco de pruebas de todas las funciones de Ku­be­r­ne­tes. Ambas he­rra­mie­n­tas son de código abierto y tienen la licencia Apache 2.0. Los clústeres y sus co­m­ple­me­n­tos se pueden evaluar, activar, des­ac­ti­var y extender efi­ca­z­me­n­te. Estos últimos pueden de­sa­rro­llar­se todavía más mediante el sencillo método de ensayo y error, lo que genera un eco­si­s­te­ma de Ku­be­r­ne­tes aún más amplio.

Al margen de realizar pruebas fá­ci­l­me­n­te y de­sa­rro­llar pequeños proyectos de software privados, Minikube también puede usarse para te­c­no­lo­gías externas; entre otras cosas, como soporte ex­pe­ri­me­n­tal para las GPU NVIDIA. Por ello, la he­rra­mie­n­ta es útil para de­sa­rro­lla­do­res de diversos ámbitos, desde los de vi­deo­jue­gos hasta los de al­go­ri­t­mos de apre­n­di­za­je au­to­má­ti­co.

Minikube también está dirigido a ad­mi­ni­s­tra­do­res de TI. Los CIO no­r­ma­l­me­n­te no tienen tiempo para de­sa­rro­llar, probar o aprender a utilizar nuevas he­rra­mie­n­tas in­fo­r­má­ti­cas; algo que, pa­ra­dó­ji­ca­me­n­te, resulta im­pre­s­ci­n­di­ble debido a la velocidad con la que estas evo­lu­cio­nan. No hay forma más fácil de fa­mi­lia­ri­zar­se con Ku­be­r­ne­tes que ma­n­te­ne­r­se al día con Minikube. Incluso existe una función de Minikube para el dashboard de Ku­be­r­ne­tes que ofrece un resumen muy detallado del co­m­po­r­ta­mie­n­to de la apli­ca­ción en el clúster, incluidas las métricas de uso. Además, Minikube es una he­rra­mie­n­ta perfecta para presentar Ku­be­r­ne­tes o mostrar sus funciones, que se puede ejecutar lo­ca­l­me­n­te.

Una pequeña in­tro­du­c­ción al gran mundo de Minikube

Para instalar Minikube basta con disponer de un sistema de co­n­te­ne­do­res, como Docker, o un entorno con una máquina virtual y la interfaz de comando nativa kubectl. Las in­s­tru­c­cio­nes para instalar Minikube están incluidas en la do­cu­me­n­ta­ción oficial de Ku­be­r­ne­tes. Luego, solo hay que ejecutar el primer comando en kubectl:

minikube start

Como cabe esperar, los re­qui­si­tos en el ordenador portátil o de es­cri­to­rio son muy ase­qui­bles:

  • 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 co­n­te­ne­do­res o máquina virtual

En cuanto se instala kubectl, puede nombrarse el nuevo clúster:

kubectl get po -A

Minikube agrupa el panel de Ku­be­r­ne­tes y permite acceder fá­ci­l­me­n­te al nuevo entorno.

minikube dashboard

Entonces, puedes comenzar con las apli­ca­cio­nes de im­ple­me­n­ta­ción. Con el siguiente comando, se crea una muestra de im­ple­me­n­ta­ción que se pone a di­s­po­si­ció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
Nota

Con estos comandos, uti­li­za­mos el entorno virtual pre­de­fi­ni­do echo­se­r­ver. 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 im­ple­me­n­ta­ció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

Al­te­r­na­ti­va­me­n­te, también se puede usar kubectl para re­di­re­c­cio­nar al puerto:

kubectl port-forward service/hello-minikube 7080:8080

Fi­na­l­me­n­te, existen los si­guie­n­tes comandos de ad­mi­ni­s­tra­ción generales para los clústeres:

Para pausar Ku­be­r­ne­tes sin impactar en las apli­ca­cio­nes im­ple­me­n­ta­das:

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 Ku­be­r­ne­tes:

minikube addons list

Para crear un segundo clúster con una versión anterior de Ku­be­r­ne­tes:

minikube start -p aged --kubernetes-version=v1.16.1

Para eliminar todos los clústeres de Minikube:

minikube delete --all
Consejo

¿Quieres saber más de Ku­be­r­ne­tes, el hermano mayor de Minikube? En nuestro completo tutorial de Ku­be­r­ne­tes, en­co­n­tra­rás in­fo­r­ma­ción práctica sobre este tema.

Ir al menú principal