kubernetesJuly 3, 2026•4 min read
Kubernetes Pod Stuck in Terminating State - How to Fix | DevOps Duoo
Kubernetes pods can become stuck in the terminating state due to various reasons, including:
D
DevOps Duoo
DevOps Expert
Kubernetes Pod Stuck in Terminating State - How to Fix
TL;DR
- Identify and resolve the root cause of a Kubernetes pod stuck in the terminating state using
kubectlcommands and pod logs. - Use
kubectl deletewith the--forceoption or remove finalizers to forcefully terminate a pod. - Implement pod eviction and graceful shutdown mechanisms to prevent similar issues in the future.
The Problem
Kubernetes pods can become stuck in the terminating state due to various reasons, including:- Resource constraints
- Network issues
- Container crashes
- Misconfigured pod settings
Identifying the Issue
To identify a pod stuck in the terminating state, use the following command:kubectl get pods -o wide
This command will display a list of all pods in the current namespace, including their status. Look for pods with a status of "Terminating" and note their names and namespaces.Troubleshooting
To troubleshoot the issue, use the following command to retrieve the pod's logs:kubectl logs <pod_name> -n <namespace> --previous
Replace and with the actual values of the pod you are troubleshooting. The --previous option allows you to view the logs of the previous container instance, which can help you identify the cause of the termination.Forcing Pod Termination
If the pod is stuck in the terminating state and you are unable to identify the root cause, you can use the following command to forcefully terminate it:kubectl delete pod <pod_name> -n <namespace> --force --grace-period=0
This command will immediately delete the pod and release its resources. However, use this option with caution, as it can cause data loss and other unintended consequences.Removing Finalizers
Another way to forcefully terminate a pod is to remove its finalizers. Finalizers are used to prevent a pod from being deleted until certain conditions are met. To remove a finalizer, use the following command:kubectl patch pod <pod_name> -n <namespace> -p '{"metadata":{"finalizers":null}}'
This command will remove all finalizers from the pod, allowing it to be deleted.Pod Eviction and Graceful Shutdown
To prevent pods from becoming stuck in the terminating state, you can implement pod eviction and graceful shutdown mechanisms. Pod eviction allows you to automatically remove pods from a node when it is under resource pressure. To enable pod eviction, you can use the following command:kubectl patch node <node_name> -p '{"spec":{"taints":[{"key":"pod-eviction","value":"true","effect":"NoSchedule"}]}}'
This command will add a taint to the node, which will prevent new pods from being scheduled on it. To enable graceful shutdown, you can use the following command:
kubectl patch deployment <deployment_name> -n <namespace> -p '{"spec":{"template":{"spec":{"terminationGracePeriodSeconds":30}}}}'
This command will set the termination grace period to 30 seconds, allowing the pod to shut down cleanly before being deleted.Common Mistakes
When troubleshooting a pod stuck in the terminating state, there are several common mistakes to avoid:- Not checking the pod's logs for error messages
- Not verifying the pod's configuration and settings
- Using the
--forceoption without understanding its implications - Not implementing pod eviction and graceful shutdown mechanisms
Key Takeaways
- Use
kubectlcommands to identify and troubleshoot pods stuck in the terminating state - Implement pod eviction and graceful shutdown mechanisms to prevent similar issues in the future
- Use the
--forceoption with caution, as it can cause data loss and other unintended consequences - Verify the pod's configuration and settings to ensure it is properly configured
- Check the pod's logs for error messages to identify the root cause of the issue