How to restart a failed pod in kubernetes deployment
Solution 1:
kubectl delete pod <podname>
it will delete this one pod and Deployment/StatefulSet/ReplicaSet/DaemonSet will reschedule a new one in its place
Solution 2:
There are other possibilities to acheive what you want:
-
Just use
rollout
commandkubectl rollout restart deployment mydeploy
-
You can set some environment variable which will force your deployment pods to restart:
kubectl set env deployment mydeploy DEPLOY_DATE="$(date)"
-
You can scale your deployment to zero, and then back to some positive value
kubectl scale deployment mydeploy --replicas=0
kubectl scale deployment mydeploy --replicas=1
Solution 3:
Just for others reading this...
A better solution (IMHO) is to implement a liveness prob that will force the pod to restart the container if it fails the probe test.
This is a great feature K8s offers out of the box. This is auto healing.
Also look into the pod lifecycle docs.
Solution 4:
kubectl -n <namespace> delete pods --field-selector=status.phase=Failed
I think the above command is quite useful when you want to restart 1 or more failed pods :D
And we don't need to care about name of the failed pod.