Kubernetes en local con microk8s

0
609

Índice de contenidos


1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Slimbook Pro 2 13.3″ (Intel Core i7, 32GB RAM)
  • Sistema Operativo: LUbuntu 18.04
  • LXD 3.4
  • microk8s v1.11.2


2. Introducción

De todos ya es sabido que Kubernetes es ahora mismo el estándar de facto para el despliegue de aplicaciones, y aquí ya hemos hablado muchas veces de él y de las necesidades de máquina que hacen que la mejor solución sea llevarlo al cloud.

Esto hace que sea muy costoso poder hacer pruebas en desarrollo de nuestros manifestos de Kubernetes y se hace prohibitivo para empresas que realmente por su negocio no necesitan un clúster de alta disponibilidad.

Entonces la solución pasa por poder ejecutar Kubernetes de forma local y esto es lo que podemos hacer con microk8s, que a diferencia de Minikube no requiere de una máquina virtual sino que podemos instalarlo directamente en Ubuntu como un paquete de snap para tener Kubernetes corriendo en nuestra máquina en segundos y consumiendo muchos menos recursos que si levantamos un clúster como hicimos en este tutorial.


3. Vamos al lío

La instalación en Ubuntu es tan sencilla como ejecutar:

¡Y ya está! En segundos tendremos disponible el API de Kubernetes corriendo en la URL “http://localhost:8080”

Podemos probar que responde a los comandos típicos de kubectl ejecutando:

Si nos queremos ahorrar el anteponer microk8s podemos crear un alias de kubectl con el siguiente comando:

Además podemos añadirle una serie de “addons” con el comando:

Entre los addons disponibles destacamos:

  • dns: para desplegar kube dns, es requerido por otros addons así que siempre se aconseja habilitarlo.
  • dashboard: con este addon tenemos disponible el típico dashboard de Kubernetes y los gráficos con Grafana.
  • storage: para permitir la creación de volúmenes persistentes.
  • ingress: para poder hacer redirecciones y balanceos en local.
  • istio: para desplegar los servicios de Istio. Todo el manejo de los comandos de Istio se hace con microk8s.istioctl
  • registry: para habilitar un registro privado de Docker al que poder acceder desde localhost:32000 que se maneja con el comando microk8s.docker

En caso de querer empezar de cero con la instancia de Kubernetes podemos resetearlo con el comando:

En caso de querer utilizar un docker privado no seguro, creado por ejemplo con una instancia de Nexus 3, podemos habilitar el acceso editando el fichero /var/snap/microk8s/current/args/docker-daemon.json con el siguiente contenido:

Y reiniciando el servicio con el comando:

En caso de querer hacer la instalación en un contenedor de LXD tenemos que crear un perfil especifico. Para ello vamos a crear un fichero llamado microk8s.profile con el siguiente contenido:

Ahora creamos el perfil “microk8s” como copia del perfil por defecto:

Y le asignamos el contenido del fichero microk8s.profile con el siguiente comando:

Ahora solo tenemos que crear el contenedor aplicándole el perfil por defecto y el perfil “microk8s” de esta forma:

Una vez creado el contenedor “microk8s” podemos acceder dentro de él con el comando:

Una vez dentro instalamos el paquete zfsutils con el comando:

Y ya podemos instalar el paquete de snap con el comando visto anteriormente.

Y ya todo lo visto anteriormente aplica exactamente igual que la instalación en local.


4. Conclusiones

Aunque solo sea para “jugar” con Kubernetes en local merece la pena instalar microk8s ya que se va a comportar igual que un clúster de Kubernetes “real”. Pero ahora imagina que lo instalas en un contenedor de LXD o en una instancia de AWS consumiendo muchos menos recursos podrías tener Kubernetes en producción, muy útil cuando tu negocio no requiere de alta disponibilidad y no tiene que manejar un gran número de contenedores.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.

Dejar respuesta

Please enter your comment!
Please enter your name here