Cómo configurar un clúster Kubernetes en AWS usando Kops

Kops se utiliza para poner en marcha el clúster Kubernetes de la forma más sencilla posible. Es una herramienta de línea de comandos que se utiliza para crear clusters Kubernetes. Kops es compatible oficialmente con AWS, mientras que GCP, DigitalOcean y OpenStack están en fase Beta. Kops también puede generar archivos Terraform para la configuración necesaria del clúster. No sólo se puede crear fácilmente un clúster utilizando Kops, sino también modificar, eliminar y actualizar la versión de Kubernetes en el clúster.

En este artículo, veremos los pasos para crear un clúster Kubernetes con 1 nodo maestro y 1 nodo trabajador en AWS. Antes de continuar, se supone que ya estás familiarizado con Kubernetes

Requisitos previos

  1. Cuenta AWS (Créala si no tienes una).
  2. Instancia EC2 Ubuntu.
  3. Bucket S3.
  4. Nombre de Dominio (Busca «¿Cómo comprar un Nombre de Dominio en AWS?» para entender los pasos para crear un Dominio en AWS).
  5. Rol IAM con permisos suficientes/admin.

¿Qué vamos a hacer?

  1. Inicia sesión en AWS.
  2. Comprueba el Bucket S3, Rol IAM.
  3. Adjunta el rol IAM a la instancia.
  4. Instala Kubectl y Kops en la instancia EC2.
  5. Valida las reglas Recordset y una zona hospedada.
  6. Crea un clúster Kubernetes utilizando Kops.
  7. Elimina el clúster.

Iniciar sesión en AWS

Haz clic aquí para ir a la página de inicio de sesión donde puedes introducir tus credenciales para entrar en la cuenta.

Página de acceso

Una vez que hayas iniciado sesión con éxito en tu cuenta de AWS, verás la Consola de Administración de AWS principal como se indica a continuación.

Consola principal de AWS

Comprueba el Bucket S3, Rol IAM

Para crear un clúster utilizando Kops, necesitamos un bucket S3 donde Kops almacenará toda la configuración del clúster.

Comprueba el bucket que quieres que se utilice para almacenar las configuraciones de Kops.

Cubo S3

Comprueba si el rol IAM que vas a utilizar tiene permisos suficientes/admin. Kops no necesita permisos de administrador, si no conoces mucho AWS IAM y los permisos y no quieres caer en ningún problema de acceso puedes utilizar el permiso de administrador.

Función IAM

Adjunta el rol IAM a la instancia

Una vez que tengas el rol, adjúntalo a la instancia EC2 que utilizarás para ejecutar los comandos kops. Ve a EC2 –> selecciona la instancia EC2 –> haz clic en Acciones –> Seguridad — > Modificar rol IAM.

Actualizar instancia EC2

Selecciona el rol IAM y guarda los cambios.

Adjunta el rol IAM a la instancia EC2

Instala Kubectl y Kops en la instancia EC2

Hasta este punto, tienes un bucket S3 y una instancia EC2 con el rol requerido asociado. Ahora inicia sesión en la instancia EC2 que utilizarás para crear un clúster utilizando Kops.

El siguiente paso es instalar Kubectl en la instancia EC2.

Ejecuta los siguientes comandos para instalar kubectl en Ubuntu Server

curl -LO «https://dl.k8s.io/release/$(curl -L -s

curl -LO «https://dl.k8s.io/$(curl -L -s

haz eco de «$(<kubectl.sha256) kubectl». | sha256sum –check

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

mkdir -p ~/.local/bin/kubectl

mv ./kubectl ~/.local/bin/kubectl

Comprueba la versión de kubectl utilizando el siguiente comando.

kubectl version –client

Instalar Kops en la instancia EC2

Ahora estás listo para instalar Kops en la misma instancia EC2.

Comprueba si el kops existe, si no es así instálalo utilizando los siguientes comandos en Ubuntu Server.

kops

curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep nombre_etiqueta | cut -d ‘»‘ -f 4)/kops-linux-amd64

chmod +x kops-linux-amd64

sudo mv kops-linux-amd64 /usr/local/bin/kops

Ahora deberías tener kops en el servidor.

kops

Instala Kubectl en la instancia EC2

Valida las reglas Recordset y una zona alojada.

Kops necesita los registros DNS necesarios para crear un clúster.

Aquí tengo una segunda zona alojada en route53.

Crear una Zona Alojada

Además, he copiado los servidores NS de mi SUBDOMINIO al dominio PADRE en Route53.

Ve a Route53 — > Zonas hospedadas — > Ve a la zona hospedada principal por defecto — > Busca el conjunto de registros y verifica sus valores.

Crear un conjunto de Registros en la Zona principal Alojada

Crear un clúster Kubernetes utilizando Kops

Ahora ya estamos preparados para crear un clúster. Antes de crear un clúster, veamos qué obtenemos cuando intentamos listar los clústeres.

kops get clusters

El comando anterior fallará porque necesita un bucket S3 como parámetro.

kops get clusters –state s3://kops.devopslee.com

Como no hay clusters existentes, el comando no listará nada.

Si no quieres dar el nombre del bucket s3 como parámetro al comando, puedes exportar su valor en el terminal a la variable «KOPS_STATE_STORE».

export KOPS_STATE_STORE=s3://kops.devopslee.com

Esta vez no necesitas especificar el bucket de S3 en el comando

kops get clusters

Obtener clúster

Ahora, vamos a intentar crear un clúster con

  1. 1 nodo maestro con la instancia de tipo t2.medium
  2. 1 nodo trabajador con la instancia de tipo t2.micro
  3. Zona de disponibilidad como us-east-1a,us-east-1b,us-east-1c

kops create cluster –name kops.devopslee.com –state s3://kops.devopslee.com –cloud aws –master-size t2.medium –master-count 1 –master-zones us-east-1a –node-size t2.micro –node-count 1 –zones us-east-1a,us-east-1b,us-east-1c

El comando anterior dará errores porque no hemos especificado ninguna clave ssh.

Comprueba si tienes un par de claves en tu instancia.

ls -l ~/.ssh/

Si no tienes ningún par de claves, puedes crearlo utilizando el siguiente comando.

ssh-keygen

Generar claves ssh

Esta vez, si vuelves a ejecutar el comando create, fallará porque el S3 fue actualizado por el comando anterior con la configuración del clúster, aunque fallara debido a la ausencia de clave ssh.

kops create cluster –name kops.devopslee.com –state s3://kops.devopslee.com –cloud aws –master-size t2.medium –master-count 1 –master-zones us-east-1a –node-size t2.micro –node-count 1 –zones us-east-1a,us-east-1b,us-east-1c –ssh-public-key ~/.ssh/id_rsa.pub

Así pues, vamos a borrar la configuración del clúster y a volver a crear el clúster con la clave ssh.

kops delete cluster –name kops.devopslee.com –state s3://kops.devopslee.com –yes

La recreación falla, borra la configuración del clúster

Esta vez vamos a pasar la clave pública ssh al crear el clúster.

kops create cluster –name kops.devopslee.com –state s3://kops.devopslee.com –cloud aws –master-size t2.medium –master-count 1 –master-zones us-east-1a –node-size t2.micro –node-count 1 –zones us-east-1a,us-east-1b,us-east-1c –ssh-public-key ~/.ssh/id_rsa.pub

Crear una configuración de clúster con una clave privada

En primer lugar, se creará la configuración del clúster.

Detalles de las creaciones de clústeres

Ahora ya tenemos la configuración del clúster. Si queremos hacer algún cambio en la configuración podemos hacerlo, sino podemos proceder a la creación del cluster. Puedes ir al bucket S3 y ver en él la configuración del cluster.

Configuración actualizada en el Bucket S3

Esta vez podrás ver que el clúster está disponible.

kops get cluster

Pero los recursos aún no se han creado.

Para crear los recursos inmediatamente, tenemos que actualizar el clúster con –yes como opción del comando.

kops update cluster –name kops.devopslee.com –yes

Actualiza el clúster para crear recursos en la nube

La creación del clúster llevará algún tiempo. Puedes validar el estado del clúster utilizando el siguiente comando «validar».

kops validar cluster –wait 10m

Valida el clúster, el clúster puede tardar 10 minutos en activarse

Una vez creados todos los recursos del clúster, éste estará listo para ser utilizado.

Cluster en estado Listo

Una vez que las instancias EC2 estén listas, kops actualiza la zona Alojado con registros A que contengan IPs del maestro.

Los registros se actualizan con la IP del nodo maestro

Ya estás listo para utilizar el clúster. Para comprobar los pods existentes en el espacio de nombres por defecto ejecuta el siguiente comando.

kubectl get pods

Incluso puedes comprobar los pods de todos los espacios de nombres

kubectl get pods -A

Comprueba los nodos del clúster

kubectl get nodos

Para obtener más detalles de los nodos, utiliza -o wide en el comando.

kubectl get nodes -o ancho

Comprueba los pods del sistema en el clúster

Eliminar el clúster

Si ya no necesitas el clúster, puedes eliminarlo fácilmente utilizando Kops.

kops get cluster

Sólo tienes que ejecutar un único comando

kops delete cluster –name kops.devopslee.com –state s3://kops.devopslee.com –yes

Eliminar el clúster

Kops borrará todos los recursos que creó para el clúster para que sea totalmente funcional

Eliminación correcta del clúster

Conclusión

En este artículo, hemos visto todos los pasos para crear un clúster Kubernetes utilizando Kops. Hemos visto que Kops necesita un dominio para crear un clúster totalmente funcional. Hemos visto lo fácil que es crear y eliminar un clúster utilizando Kops.

También te podría gustar...