kubernetes Deployments hands-on: Pod recovery

When we create a deployment we set how many replicas want for that pod but what happens if we delete on of the pods?

Let's assume we have a deployment that is managing the following pods:

$ kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
demo-997c454df-4drld   1/1     Running   4          11d
demo-997c454df-slx8k   1/1     Running   4          11d

We can delete one of the pods using kubectl delete:

$ kubectl delete pod demo-997c454df-4drld
pod "demo-997c454df-4drld" deleted

If we check the deployment, the deployment controller will notice the missing pod (notice the READY column)

$ kubectl get deploy demo
pod "demo-997c454df-slx8k" deleted
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
demo   1/2     2            1           11d

After a while it will spawn a new pod so that the number of replicas reaches the desired state:

$ kubectl get pods
NAME                   READY   STATUS              RESTARTS   AGE
demo-997c454df-7qflv   0/1     ContainerCreating   0          9s
demo-997c454df-slx8k   1/1     Running             4          11d

Once the new pod is ready we will be able to see that the deployment is back to 2/2:

$ kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
demo-997c454df-6t4bg   1/1     Running   0          72s
demo-997c454df-shm8b   1/1     Running   0          39s
$ kubectl get deploy demo
NAME   READY   UP-TO-DATE   AVAILABLE   AGE
demo   2/2     2            2           11d

Posted on 23/02/2021