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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Deployment | el objeto que mantiene un número de pods iguales | |
| Réplica | una de las copias idénticas de un pod | |
| ReplicaSet | el objeto que cuenta las réplicas por el Deployment | |
| Estado deseado | lo que pides: por ejemplo, tres pods | |
| Escalar | cambiar el número de réplicas | kubectl 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
| Momento | Deseados | Hay | Qué hace Kubernetes |
|---|---|---|---|
| Creas el Deployment | 3 | 0 | Arranca tres pods |
| Todo en marcha | 3 | 3 | Nada |
| Borras un pod | 3 | 2 | Arranca uno nuevo |
| Subes a cinco | 5 | 3 | Arranca dos más |
| Bajas a dos | 2 | 5 | Para tres |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Crea el namespace libreria
kubectl create namespace libreriaSe 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
kubectl create deployment pedidos --image=busybox:1.37.0 --replicas=3 -n libreria -- sleep 3600Se 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
kubectl rollout status deployment/pedidos -n libreriaSe 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
kubectl get deployment pedidos -n libreriaSe 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
kubectl get replicaset -n libreria --no-headers -o custom-columns=DESEADAS:.spec.replicas,LISTAS:.status.readyReplicasSe 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
kubectl get pods -n libreria --no-headers | wc -lSe 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
kubectl scale deployment pedidos --replicas=5 -n libreriaSe 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
kubectl rollout status deployment/pedidos -n libreriaSe 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
kubectl get pods -n libreria -o name | head -n 1 | xargs kubectl delete -n libreria --grace-period=1Se 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
kubectl rollout status deployment/pedidos -n libreriaSe 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
kubectl get pods -n libreria --no-headers | wc -lSe 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
kubectl delete namespace libreriaSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.