Kubernetes Rolling Update: Estrategias para Cero Tiempo de Inactividad

Aprende a implementar actualizaciones continuas en Kubernetes para lograr cero tiempo de inactividad durante la implementación de aplicaciones.

Resumen

Kubernetes Rolling Updates es una estrategia de implementación que te permite actualizar tus aplicaciones sin tiempo de inactividad, reemplazando de manera incremental las instancias de tu aplicación por nuevas. Este enfoque asegura que algunas instancias de la aplicación estén siempre disponibles, lo cual es crucial para mantener la confiabilidad del servicio en entornos de producción.

Cómo funciona

En una actualización continua, Kubernetes actualiza gradualmente los pods con la nueva versión de una aplicación mientras mantiene funcionando algunas de las instancias antiguas hasta que las nuevas estén activas. Este método es ventajoso porque gestiona efectivamente la disponibilidad de la aplicación durante la actualización. A continuación se muestra una configuración YAML simple que representa un Deployment utilizando la estrategia de actualización continua:

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: my-app  
spec:  
  replicas: 5  
  strategy:  
    type: RollingUpdate  
    rollingUpdate:  
      maxUnavailable: 1  
      maxSurge: 1  
  selector:  
    matchLabels:  
      app: my-app  
template:  
    metadata:  
      labels:  
        app: my-app  
spec:  
      containers:  
      - name: my-app  
        image: my-app:latest  
        ports:  
        - containerPort: 8080

Parámetros clave

Parámetro Descripción
maxUnavailable El número máximo de pods que pueden estar no disponibles durante la actualización.
maxSurge El número máximo de pods que pueden ser creados por encima del número deseado de pods.
replicas El número de instancias de la aplicación que se ejecutarán.
containers Lista de contenedores y sus configuraciones para ejecutar en cada pod.

En el ejemplo anterior, durante una actualización continua, si un pod está siendo actualizado (lo que lleva a una no disponibilidad temporal), al menos cuatro pods permanecerán disponibles debido a la configuración de maxUnavailable.

Errores Comunes

  • Establecer maxUnavailable demasiado alto: Esto puede llevar a más tiempo de inactividad del esperado.
  • Ignorar las sondas de preparación: No definir las sondas de preparación puede causar que el tráfico se dirija a pods que aún se están inicializando.
  • No probar actualizaciones en staging: No validar la nueva versión antes de la implementación puede llevar a fallos inesperados en producción.
  • Descuidar la supervisión: Durante una actualización continua, es esencial observar el rendimiento de la aplicación y los registros en tiempo real para detectar problemas a tiempo.

Preguntas Frecuentes

P: ¿Qué estrategia deberías elegir para asegurar actualizaciones sin tiempo de inactividad en Kubernetes?
R: La estrategia de actualización continua permite realizar actualizaciones incrementales mientras se mantiene la disponibilidad de la aplicación.

P: ¿Cómo asegura Kubernetes que algunas versiones de la aplicación permanezcan activas durante las actualizaciones?
R: Reemplazando gradualmente pods más antiguos por versiones más nuevas y respetando el parámetro maxUnavailable configurado.

P: ¿Qué sucede si un nuevo pod falla durante una actualización continua?
R: Si un pod no logra estar listo, Kubernetes no procederá a actualizar el siguiente pod hasta que el actual esté ejecutándose con éxito.

P: ¿Podemos revertir a una versión anterior si algo sale mal?
R: Sí, puedes revertir fácilmente a una versión anterior usando el comando kubectl rollout undo deployment/my-app.

Referencias

Practica

¿Listo para practicar kubernetes-rolling-update?

Responde preguntas reales, recibe feedback al instante y sube tu puntaje de habilidad — gratis. La práctica es en inglés, como las entrevistas técnicas reales.

Prueba una 👇

ReactHooksIntermedio
0 XP
When does useEffect run by default?

↑ Go ahead — pick an answer. This is Skillpato.