Alfredo Olmedo
Configuración de Kubernetes en EKS (AWS)
Elastic Kubernetes Service (EKS) en AWS permite desplegar y gestionar clústeres de Kubernetes de manera sencilla, mientras AWS se encarga de la gestión del plano de control.
Prerrequisitos
- Cuenta de AWS: Una cuenta activa con permisos administrativos.
- CLI de AWS instalada: Configura tu perfil con .
aws configure - Kubectl instalado: Para interactuar con el clúster.
- Eksctl instalado: Una herramienta que simplifica la creación de clústeres EKS.
- IAM Permisos:
eks:CreateClustereks:CreateNodegroupec2:CreateVpc
1. Crear un Clúster EKS
Opción 1: Usando eksctl (Recomendado para simplicidad)
eksctleksctl-
Comando para crear el clúster:eksctl create cluster \ --name my-eks-cluster \ --region us-west-2 \ --nodegroup-name standard-workers \ --node-type t3.medium \ --nodes 2 \ --nodes-min 1 \ --nodes-max 3 \ --managed
- : Nombre del clúster.
--name - : Región donde se desplegará.
--region - : Tipo de instancia EC2 para los nodos.
--node-type - : Número de nodos iniciales.
--nodes - : AWS gestiona los nodos.
--managed
-
Verifica el clúster:eksctl get cluster
Opción 2: Usando la consola de AWS
- Ve a EKS en la consola de AWS.
- Haz clic en "Crear clúster".
- Configura:
- Nombre del clúster.
- Versión de Kubernetes.
- Rol de IAM para EKS (puedes crear uno automáticamente).
- Configura el VPC y las subredes (puedes usar uno existente o permitir que AWS cree uno).
- Después de crear el clúster, añade un grupo de nodos desde la consola:
- Selecciona tipo de instancias EC2 y número de nodos.
2. Configurar el Contexto de Kubectl
Una vez que el clúster esté creado, configura
kubectl-
Obtener el archivo kubeconfig:aws eks update-kubeconfig --region us-west-2 --name my-eks-cluster
-
Verificar la conexión:kubectl get nodes
3. Desplegar una Aplicación en el Clúster
-
Crear un Deployment:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 Guarda este archivo como
y aplícalo:kubectl apply -f nginx-deployment.yamlnginx-deployment.yaml -
Exponer la Aplicación:apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer Guarda este archivo como
y aplícalo:kubectl apply -f nginx-service.yamlnginx-service.yaml -
Verificar la Aplicación: Encuentra la dirección IP del LoadBalancer:kubectl get service nginx-service Abre la IP en tu navegador para acceder a la aplicación.
4. Configurar Autoescalado (HPA)
-
Habilitar el escalado automático:
- Instala el Cluster Autoscaler:kubectl apply -f
-
Habilitar HPA para la aplicación:kubectl autoscale deployment nginx-deployment --cpu-percent=50 --min=1 --max=5
-
Verificar HPA:kubectl get hpa
5. Monitoreo con CloudWatch
EKS está integrado con CloudWatch para monitorear métricas, logs y alertas:
-
Habilitar logging:
- Configura el clúster para enviar logs a CloudWatch:eksctl utils update-cluster-logging --enable-types all --region us-west-2 --cluster my-eks-cluster
-
Visualizar los logs:
- Ve a CloudWatch Logs en la consola de AWS y busca los logs de tu clúster.
6. Limpieza de Recursos
Para evitar costos innecesarios, elimina los recursos creados al finalizar las pruebas:
-
Eliminar el clúster con eksctl:eksctl delete cluster --name my-eks-cluster
-
Verifica que todos los recursos han sido eliminados:aws eks list-clusters
Esta guía te permite configurar un clúster EKS en AWS, desplegar aplicaciones, habilitar escalado automático y monitorear el rendimiento. EKS es ideal para proyectos que requieren alta disponibilidad, escalabilidad y una integración profunda con servicios de AWS.
