Saltar al contenido principal

🚀 Deploy

Un Deployment es la forma estándar de poner una aplicación a funcionar en el clúster. Usted indica qué imagen usar y cuántas copias (réplicas) quiere, y Kubernetes crea los pods y los mantiene funcionando: si un pod cae, crea otro.

Deployment  ->  ReplicaSet  ->  Pods
info

El deploy se realiza con kubectl. El Panel Nuvion se encarga del clúster, pero no crea aplicaciones dentro de él.


🚀 Antes de comenzar​

🚀 1. Crear el archivo del Deployment​

Cree el archivo deploy-web.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 2
selector:
matchLabels:
app: web-deploy
template:
metadata:
labels:
app: web-deploy
spec:
containers:
- name: nginx
image: nginx:1.26
ports:
- containerPort: 80
resources:
requests:
cpu: 100m
memory: 64Mi
limits:
cpu: 250m
memory: 128Mi
readinessProbe:
httpGet:
path: /
port: 80

Qué hace cada parte:

CampoFunción
replicasCuántos pods mantener funcionando
imageLa imagen (y la versión) del contenedor
requestsEl mínimo de recursos que el pod necesita
limitsEl máximo de recursos que el pod puede usar
readinessProbeSolo envía tráfico al pod después de que responde

🚀 2. Aplicar​

kubectl apply -f deploy-web.yaml

Salida esperada: deployment.apps/web-deploy created

🚀 3. Verificar​

kubectl get deployment web-deploy
kubectl get pods -l app=web-deploy

Espere a que la columna READY muestre 2/2 y los pods estén Running.

🚀 4. Ver la recreación automática​

Elimine uno de los pods y observe:

kubectl delete pod NOMBRE-DE-UNO-DE-LOS-PODS
kubectl get pods -l app=web-deploy

Kubernetes crea un pod nuevo para mantener 2 réplicas.

🚀 5. Exponer la aplicación​

Para acceder al Deployment, cree un Service (vea la página Services):

kubectl expose deployment web-deploy --name=web-deploy-svc --port=80

✅ Cómo saber si funcionó​

kubectl get deployment web-deploy muestra READY 2/2 y AVAILABLE 2.

❗ Problemas comunes​

SíntomaCausaSolución
READY 0/2Los pods no iniciaronVea kubectl describe pod y Events
ImagePullBackOffLa imagen o versión no existeVerifique el nombre y el tag en image
selector does not match template labelsmatchLabels distinto de labelsUse la misma etiqueta en ambos
Pods PendingSin recursos en los nodesReduzca requests o aumente la capacidad (Scale)

🧹 Limpieza​

Mantenga el Deployment para las próximas páginas de Operaciones. Cuando termine:

kubectl delete svc web-deploy-svc
kubectl delete deployment web-deploy

➡️ Próximo paso: Scale

🧠 ¿Dudas?​

¡Hable con nuestro equipo de soporte técnico de SaveinCloud!