Back to Blog

Tutorialยท

How to restart a Kubernetes Pod

Everything you need to know about restarting a Kubernetes Pod, including rollouts, update strategies such as RollingUpdate, OnDelete and Recreate.

What if I told you there is no way to restart a Kubernetes Pod? Well, there isn't. But don't worry, there are ways to achieve a similar result.

Restarting a Pod is equivalent to duplicating a Pod, and then deleting the original one. While there's no command to restart a specific Pod, you can do that via resources that manage Pods, like a Deployment or StatefulSet.

Let's see how that works!

How to restart a Pod in Kubernetes

Restart Pods managed by a Controller โ€” such as Deployment or DaemonSet โ€” is possible via the kubectl rollout restart command. Here's an example:

kubectl rollout restart -n default deployment/nginx

The command above will restart all Pods managed by the nginx deployment in the default namespace.

If you prefer using GUI instead of the terminal commands, you can also restart pods using Aptakube. Here's an example of using Aptakube to restart a deployment. Note now Kubernetes performs the restart in a way that is safe and does not cause downtime to your service. We'll explain more about this in the next section.

While this is not strictly a restart because it requires a Create + Delete, it technically looks like a restart, except that the Pod Name and IP will be different. If you're using a Service to access your Pods (which you should), then having a new IP would not be a problem as the service would transparently route traffic to new Pods.

Safely restarting Pods using Update Strategies

How Kubernetes handles rolling restarts depends on the update strategy defined in the parent resource. There are 3 update strategies to choose from

  • RollingUpdate: With this strategy, Kubernetes will first create new Pods using the same template as the existing ones, After a number of Pods are in the Ready state, Kubernetes will then start deleting older Pods. This is performed until all new Pods are Ready, and older Pods are deleted. There are additional parameters to control how quickly this update should happen. See video above for a visual example of rolling update. This is the default strategy for Deployments, DaemonSet and StatefulSet, and the recommended strategy for most use cases.
  • Recreate: This strategy will first delete all existing Pods before creating new ones. Use this strategy carefully as it may cause downtime to your service. This is only available for Deployments.
  • OnDelete: This strategy will wait until the Pods are manually deleted before creating new ones. This is especially useful to have a manual control over the update process. This is only available for DaemonSet and StatefulSet.

๐Ÿ‘‹ That's all folks, I hope you find this short article useful.

Tired of using Kubectl? ๐Ÿ˜“

Experience hassle-free Kubernetes management with a powerful GUI.

Screenshot of Aptakube showing a list of pods from 2 clusters in a single view