Creación de un cluster en EKS (I)
Introducción
Elastic Kubernetes Service
(EKS) es el servicio de Amazon para la creación y gestión de clusters de Kubernetes en AWS.
Hay una guía muy completa en el EKS Workshop, aunque no me ha resultado útil. Está todo muy orientado a los ejemplos del taller, pero las explicaciones que se dan no encajan bien con las necesidades reales de un proyecto, cuando se quiere crear un cluster desde cero.
Sin embargo sí me ha convencido la guía oficial de Amazon EKS. He seguido sus pasos cuando he tenido que crear un cluster y me ha ido muy bien. Es cierto que es una guía un poco densa a veces y otras, falta algo de información. Pero investigando un poco, todo se saca.
Vamos al lío. En EKS, un cluster se puede crear:
- Desde la consola de EKS: es visual pero, inesperadamente, bastante tedioso y lioso de hacer
- Usando eksctl: usando comandos, pero más fácil ya que permite usar configuraciones
YAML
para definir el cluster y crea automáticamente todos los recursos de AWS necesarios
Por la sencillez de uso y lo estandarizado de la solución, he encontrado que me es mejor usar eksctl.
Decisiones previas
Estudiar los recursos necesarios
Es muy importante dimensionar correctamente el cluster, para no gastar de más y para no quedarnos cortos. Cuando creemos el cluster, se asignará una instancia EC2 a cada nodo, del tipo que hayamos elegido, pero no la podremos cambiar más adelante. Por eso es muy importante decidir bien en este paso. No obstante, si por lo que fuera nos quedáramos cortos, siempre se puede escalar horizontalmente el cluster, añadiendo más nodos.
Hay un par de cosas fundamentales para para dimensionar la instancia de EC2 adecuada para sus nodos:
- Medir la RAM y CPU que usarán las aplicaciones a desplegar en el cluster, contando con el número total de instancias de cada una
- Contar con lo que consumirá
kubelet
, el sistema operativo y otras aplicaciones
Estudiado eso, elegir una instancia del catálogo de EC2.
Versión del cluster
Siempre es buena idea usar una versión tan alta como sea posible. Así retardaremos el problema de quedarnos desfasados. Pero tampoco hay que pasarse; se elegimos la última versión, puede que las herramientas que necesitemos todavía no estén actualizadas y no sean compatibles.
A día de hoy, la mejor opción es la versión 1.15
. Además, desde marzo del 2020, Amazon EKS la soporta oficialmente.
Valores por defecto
Interesa que el grupo de nodos sea gestionado – managed.
Que sea gestionado es necesario para el autoescalado.
Instalar eksctl
Conceptos
eksctl es la herramienta oficial de AWS que se usa para gestionar clusters de EKS. Su uso se explica profusamente en esta guía.
eksctl permite predefinir configuraciones completas de clusters usando YAML y crear un cluster a partir de ellas, de forma trivial; creando además todos los recursos necesarios en AWS, tales como VPCs, roles, permisos, subredes, instancias de EC2, reglas…
También se crea un EKS Control Plane
, que es una máquina virtual dedicada a ejercer de nodo master del cluster; y tiene un coste, claro.
Instalación de Chocolatey
Para Windows es muy conveniente instalar Chocolatey
para poder instalar eksctl. Vale con seguir estas instrucciones.
Instalación de eksctl con Chocolatey
Ahora hay que instalar aws-iam-authenticator
, la herramienta que se va a integrar con el AWS CLI que ya tenemos configurado en local, para poder crear los roles IAM necesarios para EKS y, posteriormente, conectarse con él. En la misma PowerShell de la instalación de Chocolatey, ejecutamos:
chocolatey install -y eksctl aws-iam-authenticator
La versión que instala es la 0.15.0
y en la documentación dicen que tiene que ser la 0.16.0-rc.1
; sin embargo no he tenido ningún problema durante todo el proceso de creación y gestión del cluster.