¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Deployments y réplicas en Kubernetes

Después de esta lección: Puedo mantener tres copias de un pod en marcha con un Deployment.

Lección de 55 min12 comandosLaboratorio de Kubernetes: un clúster k3s de un nodo para cada alumno en una VM Ubuntu privada

Un Deployment mantiene tres copias en marcha

Un Deployment es el objeto de Kubernetes que mantiene en marcha un número de pods iguales. Si uno se cae o lo borras, crea otro para volver al número pedido.

Una librería online no puede quedarse sin su gestor de pedidos porque un pod falle de madrugada. Con tres copias, las otras dos siguen atendiendo mientras la tercera se repone.

Al final de esta lección

Nota

Puedo mantener tres copias de un pod en marcha con un Deployment.

Palabras clave

PalabraQué significaEjemplo
Deploymentel objeto que mantiene un número de pods iguales
Réplicauna de las copias idénticas de un pod
ReplicaSetel objeto que cuenta las réplicas por el Deployment
Estado deseadolo que pides: por ejemplo, tres pods
Escalarcambiar el número de réplicaskubectl scale

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un Deployment es un deseo que Kubernetes cumple

Tú no dices «arranca tres pods». Dices «quiero tres pods». Ese es el estado deseado. Kubernetes compara sin parar lo que hay con lo que quieres, y corrige la diferencia.

Cada copia es una réplica. Si hay dos y quieres tres, arranca una. Si hay cuatro, para una. El resultado es que el número real tiende siempre al deseado.

Ejemplo: tres réplicas y un pod borrado

MomentoDeseadosHayQué hace Kubernetes
Creas el Deployment30Arranca tres pods
Todo en marcha33Nada
Borras un pod32Arranca uno nuevo
Subes a cinco53Arranca dos más
Bajas a dos25Para tres

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Crea el namespace libreria

Comando
kubectl create namespace libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crea el Deployment pedidos con tres réplicas

Comando
kubectl create deployment pedidos --image=busybox:1.37.0 --replicas=3 -n libreria -- sleep 3600

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Espera a que las tres réplicas estén listas

Comando
kubectl rollout status deployment/pedidos -n libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mira el Deployment

Comando
kubectl get deployment pedidos -n libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un ReplicaSet cuenta las réplicas

El Deployment no cuenta pods él mismo. Crea un ReplicaSet, y es este quien cuenta las réplicas y arranca o para pods. El Deployment lo vigila y lo cambia cuando actualizas la aplicación.

En la práctica verás tres niveles: el Deployment, su ReplicaSet y los pods, cuyos nombres llevan los dos nombres anteriores.

Pregunta al ReplicaSet cuántos quiere y cuántos hay

Comando
kubectl get replicaset -n libreria --no-headers -o custom-columns=DESEADAS:.spec.replicas,LISTAS:.status.readyReplicas

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta los pods del namespace

Comando
kubectl get pods -n libreria --no-headers | wc -l

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que borrar un pod quita una réplica. No es así: el Deployment sigue queriendo el mismo número y arranca otro pod. Para tener menos réplicas cambia el número, con kubectl scale, o borra el Deployment.

Escalar es cambiar el número deseado

kubectl scale cambia las réplicas sin tocar nada más. Con cinco, un pico de pedidos se reparte entre más pods.

Después borra un pod a propósito. Verás que el Deployment arranca otro y vuelve a cinco. Si rollout status dice que espera pods listos, deja que termine: es el Deployment trabajando.

Sube el Deployment a cinco réplicas

Comando
kubectl scale deployment pedidos --replicas=5 -n libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Espera a que las cinco estén listas

Comando
kubectl rollout status deployment/pedidos -n libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Borra uno de los pods

Comando
kubectl get pods -n libreria -o name | head -n 1 | xargs kubectl delete -n libreria --grace-period=1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Espera a que el Deployment lo reponga

Comando
kubectl rollout status deployment/pedidos -n libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cuenta otra vez los pods

Comando
kubectl get pods -n libreria --no-headers | wc -l

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Borra el namespace libreria

Comando
kubectl delete namespace libreria

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Sobre este laboratorio y su código: Laboratorio de Kubernetes: un clúster k3s de un nodo para cada alumno en una VM Ubuntu privada

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.