Saltar al contenido principal

🔁 Rollout

El rollout es la actualización gradual de una aplicación: los pods antiguos se reemplazan por los nuevos poco a poco, sin derribar el servicio. Si la versión nueva no queda lista, Kubernetes mantiene los pods antiguos atendiendo.

info

Los rollouts se realizan con kubectl. El Panel Nuvion no tiene este recurso.


🚀 Antes de comenzar​

  • Tener el acceso al clúster configurado (vea Acceso al Clúster).
  • Tener el Deployment web-deploy de la página Deploy (imagen nginx:1.26).

🚀 1. Actualizar la versión de la imagen​

kubectl set image deployment/web-deploy nginx=nginx:1.27

El formato es NOMBRE-DEL-CONTENEDOR=NUEVA-IMAGEN. En el modelo de la página Deploy, el contenedor se llama nginx.

🚀 2. Seguir la actualización​

kubectl rollout status deployment/web-deploy
kubectl get pods -l app=web-deploy

Verá pods nuevos subiendo mientras los antiguos salen. El final es successfully rolled out.

🚀 3. Registrar el motivo del cambio​

kubectl annotate deployment/web-deploy kubernetes.io/change-cause="Atualiza nginx para 1.27" --overwrite

El texto aparece en el historial del paso 4.

🚀 4. Ver el historial​

kubectl rollout history deployment/web-deploy

Cada versión del Deployment es una revisión numerada.

🚀 5. Controlar el ritmo de la actualización​

Por defecto, Kubernetes actualiza por etapas. Puede ajustarlo en el Deployment:

spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
CampoSignificado
maxUnavailable: 0Nunca quedar con menos pods de los deseados
maxSurge: 1Puede crear 1 pod adicional durante el cambio

🚀 6. Pausar y reanudar (opcional)​

kubectl rollout pause deployment/web-deploy
kubectl rollout resume deployment/web-deploy

✅ Cómo saber si funcionó​

kubectl get deployment web-deploy -o jsonpath='{.spec.template.spec.containers[0].image}'

El comando muestra nginx:1.27.

❗ Problemas comunes​

SíntomaCausaSolución
rollout status queda esperandoLos pods nuevos no quedan listosVea kubectl get pods: si aparece ImagePullBackOff, la imagen no existe. Deshaga con Rollback
unable to find container namedNombre del contenedor incorrectoVea el nombre con kubectl describe deployment web-deploy
timed out waiting for the conditionLa actualización pasó del plazoVerifique los Events y haga el Rollback

➡️ Próximo paso: Rollback

🧠 ¿Dudas?​

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