Learn how to restart Kubernetes Pods With Kubectl. Our Kubernetes Support team is here to help you with your questions and concerns.
How to Restart Kubernetes Pods With Kubectl
Did you know pods don’t always terminate when an application fails in Kubernetes? Although there are no direct `kubectl restart pod` command, there are multiple ways to restart pods using `kubectl`.
Today, we will examine pod statuses, why restarts are necessary, and five effective methods for restarting pods.
Different Pod Statuses in Kubernetes
A pod in Kubernetes can be in one of five states:
- Pending: At least one container has not yet been created.
- Running: All containers are created, and the pod is bound to a Node. Containers are running or in the process of starting or restarting.
- Succeeded: All containers have terminated successfully and will not restart.
- Failed: All containers have terminated, with at least one container failing (non-zero exit code).
- Unknown: The pod status cannot be determined.
If a pod gets stuck in an error state, like CrashLoopBackOff, it means Kubernetes is repeatedly trying to restart the pod but failing. When this happens, we must carry out a manual pod restart.
How to Restart Pods in Kubernetes
Our Experts have put together five methods to restart pods using `kubectl`. Remember that restarting pods will create new pods with different names.
Method 1: Rollout Restart
A rollout restart is the safest and most efficient way to restart pods, as it gradually replaces pods without causing downtime (available from Kubernetes v1.15).
kubectl rollout restart deployment <deployment_name> -n <namespace>
This command terminates pods and recreates them one by one. This method works well in production environments where uptime is critical.
Method 2: Scale Down and Up (Risk of Downtime)
If downtime is acceptable, scaling pods to zero and backup is a simple option.
We can scale down to zero replicas (delete all pods) with this command:
kubectl scale deployment deployment_name -n namespace –replicas=0
To scale back up to the desired number of replicas with this command:
kubectl scale deployment deployment_name -n namespace –replicas=3
To check pod status during scaling, run:
kubectl get pods -n namespace
In this method, all pods are terminated simultaneously, causing downtime. It works well in development or testing environments.
Method 3: Delete Pod or ReplicaSet
Deleting a pod will trigger Kubernetes to recreate it automatically.
To delete a single pod, run:
kubectl delete pod pod_name -n namespace
Or, to delete multiple pods by label, run:
kubectl delete pod -l "app=myapp" -n namespace
If there are lots of pods, we can delete the ReplicaSet:
kubectl delete replicaset replicaset_name -n namespace
Method 4: Force Replace Pods
We can force Kubernetes to restart pods by fetching their YAML and using `kubectl replace`.
kubectl get pod pod_name -n -o yaml | kubectl replace --force -f -
Here, the pod is deleted and recreated with the same configuration. This method works well if we can’t access the original YAML file.
Method 5: Restart via Environment Variable Update
Modifying a pod’s environment variable triggers a restart. A simple trick is to update a timestamp.
kubectl set env deployment deployment_name -n namespace DEPLOY_DATE="$(date)"
Here, Kubernetes restarts pods to apply the new environment variable.
It works well in CI/CD pipelines where we want to trigger restarts without changing pod configuration.
[Need assistance with a different issue? Our team is available 24/7.]
Conclusion
While Kubernetes doesn’t have a direct `kubectl restart pod` command, the above methods let us restart pods depending on our needs.
In brief, our Support Experts demonstrated how to restart Kubernetes Pods With Kubectl.
0 Comments