Creando un clúster de k8s en local con kind

Creando un clúster de k8s en local con kind

Social

Hasta hace relativamente poco no estaba familiarizado con k8s, nunca habia trabajado en un entorno productivo, y lo que habia probado en local era con herramientas como minik8s.

Ahora ya trabajo con k8s en mi dia a dia en Dorna, y gracias a un compañero descubrí kind:

Kind es una herramienta para ejecutar clústeres de Kubernetes locales mediante los “nodos” de contenedor de Docker.
kind se diseñó principalmente para probar el propio Kubernetes, pero se puede usar para desarrollo local o CI.

Instalación

Para hacer funcionar kind, necesitamos tener docker y go instalado.

Para instalar docker, si usamos Ubuntu/Debian, es tan sencillo como ejecutar en la terminal:

sudo apt-get install docker 

Es necesario que desde nuestro usuario tengamos permisos para ejecutar los comandos de docker.

Ahora instalaremos go, para ello, lo descargamos con este comando (es posible que el enlace no sea de la ultima versión, puedes comprobarlo aquí):

wget https://go.dev/dl/go1.17.5.linux-amd64.tar.gz

Una vez descargado, lo descomprimiremos y moveremos:

tar -xcf go1.17.5.linux-amd64.tar.gz && sudo mv go /usr/local/

Ahora añadiremos los siguientes directorios al PATH para poder ejecutarlos. Abriremos el fichero .bashrc con nano, vim o cualquier editor de textos, y añadiremos estas lineas:

export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:~/go/bin

Ahora, si cerramos y volvemos a abrir la terminal, ya podremos utilizar go:

go version

Y si ese comando funciona, podremos instalar kind:

go install sigs.k8s.io/[email protected] 

Crear clúster

Crear un cluster con kind no puede ser más sencillo. Ejecutaremos el siguiente comando:

kind create cluster

Y tachán! Ya tenemos nuestro cluster local:

El mismo comando tiene varias opciones, para levantarlo desde una imagen concreta, cambiarle el nombre, etc:

Usage:
  kind create cluster [flags]

Flags:
      --config string       path to a kind config file
  -h, --help                help for cluster
      --image string        node docker image to use for booting the cluster
      --kubeconfig string   sets kubeconfig path instead of $KUBECONFIG or $HOME/.kube/config
      --name string         cluster name, overrides KIND_CLUSTER_NAME, config (default kind)
      --retain              retain nodes for debugging when cluster creation fails
      --wait duration       wait for control plane node to be ready (default 0s)

Global Flags:
      --loglevel string   DEPRECATED: see -v instead
  -q, --quiet             silence all stderr output
  -v, --verbosity int32   info log verbosity

kubectl

Ahora podemos utilizar kubectl para controlar nuestro cluster: crear deployments, visualizar pods, etc.

Si no lo tienes instalado, puedes ejecutar este comando:

curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"

Y ahora seleccionar el contexto, que por defecto, es kind-kind:

kubectl config use-context kind-kind

A partir de aqui, puedes interactuar como con otro cualquier cluster de k8s, por ejemplo, instalando el Dashboard de k8s (iba a explicar en este post como, pero creo que es más sencillo que veais este post: https://www.returngis.net/2019/03/instalar-kubernetes-dashboard-en-tu-cluster/)

Si te ha gustado esta entrada, ¡compartela en tus redes sociales favoritas, muchas gracias!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*