Tu cluster de Kubernetes en la nube en minutos con CIVO

Tu cluster de Kubernetes en la nube en minutos con CIVO

Desde hace un tiempo que vengo mirando el desarrollo de un proveedor de servicios administrados en la nube, que su oferta principal se basa en Kubernetes, más precisamente en K3s.

Este proveedor se llama CIVO y recientemente tuvo como novedad el lanzamiento de una región en USA, cosa que, a mi particularmente, me resultaba sumamente importante y clave para considerarlos como plataforma para desarrollar ya que la latencia contra Londres (Su primera región) no resultaba para nada atractiva.

En este artículo, te quiero mostrar el proceso de creación de un nodo de K3s en CIVO, para esto, primero es necesario que creen una cuenta. La misma la pueden crear desde este enlace:

Managed Kubernetes service, powered by K3s - Civo.com
Feature-packed, managed Kubernetes built for speed and simplicity, with K3s under the hood. We make Kubernetes work for you, not slow you down.

Atención, como la plataforma esta en periodo beta aún, la aceptación de la cuenta para poder probar el servicio sin cargo, pasa por un proceso de aprobación, en mi caso no tomo más que un par de días.

Comencemos a jugar

Cómo crear un cluster de K3s en CIVO

Una vez que tenemos nuestra cuenta, nos autenticamos desde acá:

Log in to your dashboard – Civo.com
Log in to manage your Civo instances using our bespoke dashboard.

Una vez que estamos adentro, veremos lo siguiente. Si nos fijamos, en este caso no tengo creado ningún cluster y si estás aceptado en el programa Beta, vas a tener un crédito de U$S70 por mes para probar el servicio.

Algo importante sobre el crédito es que es solo para usar para probar el servicio de K3s Administrado, no sirve para los recursos de IaaS que creemos (Cómo maquinas virtuales, storage, etc).

Lo siguiente que vamos a hacer es crear un Cluster, para eso, haremos un click en Launch my first cluster.

Lo que veremos aquí es lo siguiente:

Primero, debemos especificar un nombre para nuestro cluster, luego elegimos la cantidad de nodos que va a tener, en mi caso elegí tres, también debemos elegir una red, si buscas aislar diferentes clusters, podés crear redes adicionales. Para mi caso lo voy a dejar así.

Ahora viene lo importante, debemos elegir el tamaño de nuestros nodos. Con los U$S70 que viene de parte del programa Beta, podríamos desplegar tres nodos de 4GB de RAM, 2 vCPU, 50 GB SSD y 2 TB de transferencia. ¿Nada mal, verdad?

Si queremos algo más potente, podríamos armar un cluster de dos nodos de 8GB de RAM, ahí serían U$S80 dólares, con lo cual, lo que tendríamos que pagar serían U$S10, también, ¿nada mal, verdad?.

Una vez seleccionado el tamaño de los nodos, podemos bajar y vamos a ver algo que a mí particularmente me gusta mucho y son diferentes soluciones que podemos desplegar junto con nuestro cluster. Esto nos ahorrará un montón de tiempo y tal vez prueba y error al configurar estos servicios.

Redis, Traefik, MariaDB, MinIO, Prometheus, Longhorn, OpenFaas y la lista sigue. Si es que te interesa, seleccionas las soluciones que quieres y haces un click en Create Cluster.

En mi caso, solamente voy a seleccionar a Traefik y Metrics Server.

Mientras el nodo se crea, veremos algo como esto:

Cuando esta todo listo, se verá algo parecido a esto:

Lo que ven ofuscado es la dirección IP del master del cluster, el endpoint de la API y el nombre de DNS, pero podemos ver nuestros nodos listos para comenzar a trabajar.

A manejar este cluster se ha dicho

Una vez que nuestro cluster esta listo, debemos descargar nuestro Kubeconfig, con este archivo, es que vamos a poder manejar nuestro cluster desde nuestra maquina, no hay necesidad de acceder por SSH, aunque, para serles honestos, me gustaría tener un acceso para cuando el Cluster, eventualmente, deje de funcionar, sea por la razón que sea.

Antes de avanzar, déjenme mostrarles el ping que tengo desde Uruguay hasta la región de CIVO en USA, específicamente en NYC.

PING x.x.x.93 (x.x.x.93): 56 data bytes
64 bytes from x.x.x.93: icmp_seq=0 ttl=47 time=173.626 ms
64 bytes from x.x.x.93: icmp_seq=1 ttl=47 time=173.474 ms
64 bytes from x.x.x.93: icmp_seq=2 ttl=47 time=171.523 ms
64 bytes from x.x.x.93: icmp_seq=3 ttl=47 time=173.320 ms
64 bytes from x.x.x.93: icmp_seq=4 ttl=47 time=173.155 ms
64 bytes from x.x.x.93: icmp_seq=5 ttl=47 time=172.129 ms
64 bytes from x.x.x.93: icmp_seq=6 ttl=47 time=173.504 ms
64 bytes from x.x.x.93: icmp_seq=7 ttl=47 time=173.384 ms

Una vez que descargamos el archivo, vamos a ejecutar en nuestra terminar lo siguiente:

$ export KUBECONFIG=civo-my-awesome-cluster-kubeconfig

A partir de ahora, podemos ejecutar comandos kubectl, como sí estuviésemos conectados a la consola del servidor.

Lo primero que probamos para este caso es ejecutar un comando para que me muestre todos los pods que están corriendo:

$ kubectl get pods -A

El resultado, debería ser algo así:

NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   metrics-server-86cbb8457f-mzgxz           1/1     Running   0          123m
kube-system   local-path-provisioner-7c458769fb-tns68   1/1     Running   0          123m
kube-system   coredns-854c77959c-frml7                  1/1     Running   0          123m

Nuestros pods están corriendo, veamos como esta nuestro cluster:

$ kubectl get nodes

Todo parece estar super bien:

NAME                                          STATUS   ROLES                  AGE    VERSION
k3s-my-awesome-cluster-578d8cec-master-c2da   Ready    control-plane,master   125m   v1.20.2+k3s1
k3s-my-awesome-cluster-578d8cec-node-9460     Ready    <none>                 124m   v1.20.2+k3s1
k3s-my-awesome-cluster-578d8cec-node-fc4f     Ready    <none>                 125m   v1.20.2+k3s1

Ya tenemos nuestro cluster listo para comenzar a trabajar, de ahora en más, podemos comenzar a instalarles aplicaciones.

Si como en mi caso, no seleccionaste ninguna aplicación para instalarla junto con la creación del cluster, ahora es buen momento para hacerlo.

Podés arrancar instalando Traefik:

Cómo desplegar Traefik v2.3.5 en Kubernetes con soporte SSL
En este artículo, te muestro, como de una manera bastante sencilla, podemos desplegar Traefik v2.3.5 en Kubernetes.

Portainer, que te va a ayudar con la administración del host en el caso de que recién estés arrancando con Kubernetes:

Cómo desplegar Portainer Business 2.0 detrás de Traefik, con soporte SSL en Kubernetes.
En este artículo te muestro como desplegar Portainer Business 2.0 en Kubernetes detrás de Traefik con Soporte SSL.

Si necesitas más, puedes encontrar algunas recetas en este Github:

xe-nvdk/easy-kubernetes-cookbook
This is my cookbook to run things on Kubernetes... Take a look, take wherever you need, and contribute it if you want it. - xe-nvdk/easy-kubernetes-cookbook

Para ir cerrando

Como ves, la creación de un cluster de Kubernetes es bastante sencilla, si me preguntas si te recomiendo CIVO, te digo que si, los precios son acordes, la conectividad también y encima los nodos están super optimizados, con lo cual el aprovechamiento de recursos resulta muy interesante.

Ahora es tu turno de darle una probada y comentarme que te pareció.