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
- Cuenta AWS (Créala si no tienes una).
- Instancia EC2 Ubuntu.
- Bucket S3.
- Nombre de Dominio (Busca «¿Cómo comprar un Nombre de Dominio en AWS?» para entender los pasos para crear un Dominio en AWS).
- Rol IAM con permisos suficientes/admin.
¿Qué vamos a hacer?
- Inicia sesión en AWS.
- Comprueba el Bucket S3, Rol IAM.
- Adjunta el rol IAM a la instancia.
- Instala Kubectl y Kops en la instancia EC2.
- Valida las reglas Recordset y una zona hospedada.
- Crea un clúster Kubernetes utilizando Kops.
- 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.
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.
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.
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.
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.
Selecciona el rol IAM y guarda los cambios.
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
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
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.
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 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
Ahora, vamos a intentar crear un clúster con
- 1 nodo maestro con la instancia de tipo t2.medium
- 1 nodo trabajador con la instancia de tipo t2.micro
- 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
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
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
En primer lugar, se creará la configuración del clúster.
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.
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
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
Una vez creados todos los recursos del clúster, éste estará listo para ser utilizado.
Una vez que las instancias EC2 estén listas, kops actualiza la zona Alojado con registros A que contengan IPs del 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
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
Kops borrará todos los recursos que creó para el clúster para que sea totalmente funcional
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.