lunes, 9 de marzo de 2020

KIND - Kubernetes IN Docker (Clúster Multi-Nodo Local)

Kubernetes
IN Docker

    El mundo de los contenedores y su orquestación se ha hecho muy popular en estos ultimos años, y a cobrado mucha mas relevancía a la hora de planear una arquitectura de software. Tanto desarrolladores como administradores de sistemas y operadores se han visto involucrados y es por ello que en algunos escenarios es preciso ya sea para probar algunos conceptos o realizar pruebas locales contar con algun cluster Kubernetes con varios nodos (o minions) en una maquina local.

    Este escenario no hubiera sido posible en los inicios de Kubernetes, pero conforme fue avanzando el tiempo ha surgido este maravilloso proyecto KIND (o mas bien conocido como Kubernetes IN Docker) que viene a cubrir esa necesidad de contar con un cluster multi-nodo en un ambiente local.


Instalación

Pre-requisitos 

    Es necesario tener Docker instalado, el presente articulo da por sentado que ya cuenta con una instalación funcional de docker. Caso contrario, haga una pausa aqui, y dirigase a instalar docker en su maquina local.

En macOS/Linux:
$ curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-$(uname)-amd64
$ chmod +x ./kind
$ sudo mv ./kind /usr/local/bin/kind

En Windows (PowerShell):
C:\> curl.exe -Lo kind-windows-amd64.exe https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-windows-amd64
C:\> Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe




Requisitos de Hardware
    Según la documentación oficial se indica que es necesario por lo menos 6 GB de memoria RAM y un procesador doble nucleo de 2,4 GHz como minimo. Pero la verdad es que en la practica (por lo menos desde mi experiencia) usando Fedora 31 64-bit los requisitos para un clúster de 1 control-plane y 3 nodos workers han trabajado bajo la siguiente especificación:

  • 3 GB de memoria RAM
  • 1,5 GHz de procesamiento



¿Como usar KIND?
    Para usar KIND es preciso contar con un template que permita crear un cluster a medida (especificando la cantidad de nodos master y la cantidad de nodos workers o minions), ya que de forma predeterminada KIND crea un cluster con un solo nodo.

   Por lo tanto, creamos un archivo de texto plano, y pegamos el siguiente contenido:
# three node (two workers) cluster config
kind: Cluster
apiVersion: kind.sigs.k8s.io/v1alpha3
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker

    Guardamos el anterior archivo con nombre cluster_con_3_nodos.txt en algun lugar donde luego podamos ubicarlo con facilidad (para fines practicos, supongamos que estamos en Linux, y guardamos el archivo dentro de la carpeta "Documentos" y poder darle seguimiento al presente articulo).

    Lo que especifica el template anterior, es decirle a KIND que debe crear un cluster con un nodo master (o control-plain) y 3 nodos workers (o minions).

    Para poder crear el cluster se debe ejecutar el siguiente comando:

kind create cluster --config Documents/cluster_con_3_nodos.txt
    Luego de ejecutar el comando anterior, KIND comenzará a crear el cluster segun las especificaciones escritas en el template:


    Por ultimo seteamos el contexto para el cluster recien creado y listo... ya es posible administrar el cluster con kubectl y crear pods, servicios, deployments, replicasets, etc.




Eliminar cluster (stop)

    Una vez terminamos de trabajar con el cluster, probablemente nos guste detener los servicios y/o limpiar nuestro espacio de trabajo (workspace). KIND de momento no cuenta con una opción que permita detener los servicios, la unica opción disponible es eliminar todo el cluster y volver a crearlo cuando se lo necesite.

    Para poder eliminar el cluster, podemos ayudarnos del siguiente comando:

kind delete cluster

    Ya con eso el mismo KIND se encarga de matar todos los procesos y borrar archivos de configuraciones, caches, etc... Dejando todo en condiciones para volver a recrear el cluster en un futuro.

    Con esto logramos cubrir lo basico de KIND para crear un clúster multi-nodo de forma local y poder realizar nuestras pruebas en un ambiente controlado.

   Cualquier duda o sugerencia puede debatirse libremente y con respeto en la caja de comentarios de este articulo.


No hay comentarios:

Publicar un comentario