Created
September 2, 2025 01:19
-
-
Save felipejoq/007d5a8b4234696c3fe73b9d35ccb955 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Comandos útiles Kubectl | |
| kubectl version # Ver versión de kubectl y del cluster | |
| kubectl cluster-info # Info del cluster | |
| kubectl get nodes # Listar nodos | |
| kubectl describe node <nombre-nodo> # Detalles de un nodo | |
| kubectl get pods # Listar pods | |
| kubectl get pods -o wide # Con IPs y nodos donde corren | |
| kubectl describe pod <nombre-pod> # Detalles de un pod | |
| kubectl logs <nombre-pod> # Ver logs del pod | |
| kubectl exec -it <nombre-pod> -- sh # Entrar al contenedor dentro del pod | |
| kubectl get deployments # Listar deployments | |
| kubectl describe deployment <nombre> # Ver detalles | |
| kubectl scale deployment <nombre> --replicas=3 # Escalar replicas | |
| kubectl rollout status deployment <nombre> # Ver estado del despliegue | |
| kubectl rollout undo deployment <nombre> # Hacer rollback | |
| kubectl get svc # Listar servicios | |
| kubectl describe svc <nombre-servicio> # Detalles del servicio | |
| kubectl get configmaps # Listar configmaps | |
| kubectl describe configmap <nombre> # Ver detalles | |
| kubectl get secrets # Listar secrets | |
| kubectl describe secret <nombre> # Ver detalles | |
| kubectl apply -f archivo.yaml # Crear o actualizar recursos | |
| kubectl delete -f archivo.yaml # Eliminar recursos definidos en el archivo | |
| kubectl get all # Listar todo en el namespace actual | |
| kubectl get ns # Listar namespaces | |
| kubectl config set-context --current --namespace=mi-namespace | |
| kubectl get pods -n kube-system # Listar pods en kube-system | |
| # 📌 En resumen: | |
| # get → listar. | |
| # describe → ver detalles. | |
| # logs → revisar salida de pods. | |
| # exec → entrar al contenedor. | |
| # apply/delete → trabajar con archivos YAML. |
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: eks-sample-linux-deployment
namespace: eks-sample-app
labels:
app: eks-sample-linux-app
spec:
replicas: 3
selector:
matchLabels:
app: eks-sample-linux-app
template:
metadata:
labels:
app: eks-sample-linux-app
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:1.23
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent
nodeSelector:
kubernetes.io/os: linuxservices.yaml
apiVersion: v1
kind: Service
metadata:
name: eks-sample-linux-service
namespace: eks-sample-app
labels:
app: eks-sample-linux-app
spec:
selector:
app: eks-sample-linux-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerhpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: eks-sample-hpa
namespace: eks-sample-app
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: eks-sample-linux-deployment # Apunta a tu Deployment existente
minReplicas: 2
maxReplicas: 4
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Paso a paso: Despliegue de aplicación en EKS con manifiestos
A continuación, se describen los pasos realizados para desplegar una aplicación en un clúster de Amazon EKS, exponiéndola mediante un LoadBalancer y configurando un Horizontal Pod Autoscaler (HPA).
0. Creación del clúster
Antes de comenzar, es necesario crear el clúster de EKS (ya sea desde la consola de AWS,
eksctlo Terraform).Una vez creado, se podrá conectar con
kubectl.1. Conexión al clúster
Se configuró
kubectlpara conectarse al clúster de EKS:Esto descargó las credenciales y añadió el contexto al archivo
~/.kube/config.2. Creación de un namespace
Se creó un namespace específico para aislar la aplicación:
3. Creación de los manifiestos
Se definieron los siguientes archivos YAML:
deployment.yml→ Contiene el Deployment con la definición de los pods de la aplicación.services.yml→ Define un Service de tipo LoadBalancer para exponer la aplicación hacia internet.hpa.yml→ Contiene la configuración del Horizontal Pod Autoscaler (HPA) que ajusta automáticamente el número de pods en función del uso de CPU.4. Aplicación de los manifiestos
Se aplicaron los recursos creados con los siguientes comandos:
5. Verificación de pods
Se listaron los pods para comprobar que se estaban ejecutando correctamente:
Resultado: 3 pods en estado Running.
6. Exposición de la aplicación
Se revisó el servicio creado para obtener la URL pública:
El campo EXTERNAL-IP muestra el DNS del LoadBalancer de AWS
(ejemplo:
xxxx.elb.amazonaws.com), que permite acceder a la aplicación desde internet.7. Configuración del autoscaler (HPA)
Se verificó el estado del HPA:
El HPA quedó configurado con:
8. Archivos utilizados
Finalmente, se verificó la existencia de los archivos de manifiestos en el directorio:
deployment.ymlservices.ymlhpa.yml✅ Conclusión
Con estos pasos se logró desplegar una aplicación en EKS, exponerla al público mediante un LoadBalancer y habilitar el escalado automático con un Horizontal Pod Autoscaler (HPA).