{"id":49943,"date":"2025-07-04T06:45:54","date_gmt":"2025-07-04T06:45:54","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=49943"},"modified":"2025-07-04T06:45:54","modified_gmt":"2025-07-04T06:45:54","slug":"kubernetes-troubleshooting-pods-in-pending-causes-fixes","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/kubernetes-troubleshooting-pods-in-pending-causes-fixes\/","title":{"rendered":"Kubernetes Troubleshooting: Pods in Pending \u2013 Causes &amp; Fixes"},"content":{"rendered":"\n<p>Below is a <strong>complete, production-grade list<\/strong> of <strong>all common reasons why a Kubernetes pod stays in <code>Pending<\/code> state<\/strong>, along with <strong>detailed solutions<\/strong>, <strong>commands<\/strong>, and how to verify and fix each issue.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd0d How to Start Investigating<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">kubectl describe pod <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">pod-name<\/span>&gt;<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Focus on the <code>Events:<\/code> section \u2014 it will reveal <strong>why<\/strong> the pod is stuck.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd01 Common Reasons and Solutions<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>#<\/th><th>Reason<\/th><th>Error Message \/ Symptom<\/th><th>Command to Diagnose<\/th><th>How to Fix<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>\u274c <strong>No available nodes (unschedulable)<\/strong><\/td><td><code>0\/2 nodes are available: Not schedulable<\/code><\/td><td><code>kubectl get nodes<\/code><\/td><td>Ensure at least one node is <code>Ready<\/code> and <strong>schedulable<\/strong>. Use: <code>kubectl uncordon &lt;node&gt;<\/code><\/td><\/tr><tr><td>2<\/td><td>\u274c <strong>Node Taints (control-plane nodes tainted)<\/strong><\/td><td><code>pod didn't tolerate node taint<\/code><\/td><td>`kubectl describe node<\/td><td>grep Taint`<\/td><\/tr><tr><td>3<\/td><td>\u274c <strong>Node Selectors \/ Affinity don&#8217;t match<\/strong><\/td><td><code>0\/2 nodes match node selector<\/code><\/td><td>`kubectl get pod -o yaml<\/td><td>grep -A5 nodeSelector`<\/td><\/tr><tr><td>4<\/td><td>\u274c <strong>Tolerations missing for tainted nodes<\/strong><\/td><td><code>No matching tolerations for taints<\/code><\/td><td><code>kubectl describe node &lt;node&gt;<\/code> Check <code>taints:<\/code><\/td><td>Add toleration in pod spec:<code>yaml&lt;br&gt;tolerations:&lt;br&gt; - key: \"example-key\"&lt;br&gt; operator: \"Exists\"&lt;br&gt;<\/code><\/td><\/tr><tr><td>5<\/td><td>\u274c <strong>Insufficient CPU or Memory<\/strong><\/td><td><code>insufficient memory<\/code>, <code>insufficient cpu<\/code><\/td><td><code>kubectl describe pod &lt;pod&gt;<\/code> <code>kubectl describe node &lt;node&gt;<\/code><\/td><td>Reduce pod <code>resources.requests<\/code> in YAML:<code>yaml&lt;br&gt;resources:&lt;br&gt; requests:&lt;br&gt; cpu: \"100m\"&lt;br&gt; memory: \"256Mi\"&lt;br&gt;<\/code><\/td><\/tr><tr><td>6<\/td><td>\u274c <strong>Too many pods on node (maxPods limit reached)<\/strong><\/td><td><code>Too many pods<\/code><\/td><td>`kubectl describe node<\/td><td>grep pods`<\/td><\/tr><tr><td>7<\/td><td>\u274c <strong>PersistentVolumeClaim (PVC) pending<\/strong><\/td><td><code>pod has unbound PersistentVolumeClaims<\/code><\/td><td><code>kubectl get pvc<\/code><\/td><td>Create or bind the PVC:<code>kubectl get pv<\/code>Ensure storage class and capacity match<\/td><\/tr><tr><td>8<\/td><td>\u274c <strong>ImagePullBackOff (incorrect image or no access)<\/strong><\/td><td>Appears first as <code>Pending<\/code>, then <code>ContainerCreating<\/code>, then <code>ImagePullBackOff<\/code><\/td><td><code>kubectl describe pod &lt;pod&gt;<\/code><\/td><td>Check image name and registry authFix typo or use <code>imagePullSecrets<\/code><\/td><\/tr><tr><td>9<\/td><td>\u274c <strong>Missing CNI plugin (pod networking not ready)<\/strong><\/td><td><code>network plugin is not ready<\/code><\/td><td><code>kubectl get pods -n kube-system<\/code><\/td><td>Ensure CNI is deployed:<code>kubectl apply -f &lt;cni-yaml&gt;<\/code> (e.g., Calico, Flannel)<\/td><\/tr><tr><td>10<\/td><td>\u274c <strong>DNS issues inside cluster<\/strong><\/td><td>Pods remain stuck in <code>Pending<\/code> or <code>ContainerCreating<\/code><\/td><td><code>kubectl logs &lt;pod&gt;<\/code> or <code>kubectl exec -it &lt;pod&gt; -- nslookup kubernetes<\/code><\/td><td>Ensure <code>kube-dns<\/code> or <code>CoreDNS<\/code> is running:<code>kubectl get pods -n kube-system<\/code><\/td><\/tr><tr><td>11<\/td><td>\u274c <strong>Pod Disruption Budgets (PDBs)<\/strong><\/td><td><code>Not enough available pods to meet the PDB<\/code><\/td><td><code>kubectl get pdb<\/code><\/td><td>Adjust <code>minAvailable<\/code> or <code>maxUnavailable<\/code> in your PDB<\/td><\/tr><tr><td>12<\/td><td>\u274c <strong>InitContainers stuck or failing<\/strong><\/td><td>Pod hangs in <code>Init:<\/code><\/td><td><code>kubectl describe pod &lt;pod&gt;<\/code> Check <code>Init:<\/code> section<\/td><td>Fix issues in the InitContainer: volume mounts, scripts, dependencies<\/td><\/tr><tr><td>13<\/td><td>\u274c <strong>Pod Quotas \/ LimitRanges hit<\/strong><\/td><td><code>LimitRange violated<\/code>, <code>ResourceQuota exceeded<\/code><\/td><td><code>kubectl describe quota<\/code> <code>kubectl describe limitrange<\/code><\/td><td>Adjust resource quotas \/ limits:<code>kubectl edit quota &lt;name&gt;<\/code><\/td><\/tr><tr><td>14<\/td><td>\u274c <strong>Custom Scheduler misconfiguration<\/strong><\/td><td>No <code>default-scheduler<\/code> events<\/td><td><code>kubectl describe pod &lt;pod&gt;<\/code> check <code>.spec.schedulerName<\/code><\/td><td>Use correct scheduler, or omit <code>schedulerName<\/code> to default to <code>default-scheduler<\/code><\/td><\/tr><tr><td>15<\/td><td>\u274c <strong>No available IPs (CNI limit)<\/strong><\/td><td>Not shown in event, but pod stuck<\/td><td>Check <code>kubelet<\/code> logs or CNI plugin logs<\/td><td>Ensure node\u2019s CNI plugin can allocate more IPs (esp. AWS, Azure)<\/td><\/tr><tr><td>16<\/td><td>\u274c <strong>Container runtime errors (e.g., containerd\/dockerd)<\/strong><\/td><td>Pod stuck in <code>Pending<\/code> or <code>ContainerCreating<\/code><\/td><td><code>journalctl -u containerd<\/code> or <code>docker info<\/code><\/td><td>Restart the runtime:<code>sudo systemctl restart containerd<\/code><\/td><\/tr><tr><td>17<\/td><td>\u274c <strong>Cluster Autoscaler delay<\/strong> (in autoscaled clusters)<\/td><td><code>waiting for node scale up<\/code><\/td><td><code>kubectl describe pod<\/code> and look for scaling delay messages<\/td><td>Wait or trigger autoscaler node scaling<\/td><\/tr><tr><td>18<\/td><td>\u274c <strong>Security context or PodSecurityPolicy blocks<\/strong><\/td><td><code>violates PodSecurityPolicy<\/code><\/td><td><code>kubectl describe pod &lt;pod&gt;<\/code><\/td><td>Ensure pod adheres to allowed securityContext \/ capabilities<\/td><\/tr><tr><td>19<\/td><td>\u274c <strong>ServiceAccount or RBAC missing<\/strong><\/td><td><code>Forbidden: ServiceAccount ...<\/code><\/td><td><code>kubectl describe pod<\/code><\/td><td>Create or bind proper <code>ServiceAccount<\/code> with correct RBAC<\/td><\/tr><tr><td>20<\/td><td>\u274c <strong>Wrong Namespace used<\/strong><\/td><td>Pod is <code>Pending<\/code>, PVC not found<\/td><td><code>kubectl get pods -A<\/code> <code>kubectl get pvc -A<\/code><\/td><td>Ensure objects are created in the same namespace or use <code>-n<\/code> flag<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddea Bonus: Best Commands for Troubleshooting<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Check events on the pod<\/span>\nkubectl describe pod &lt;pod-name&gt;\n\n<span class=\"hljs-comment\"># Check node pod limits<\/span>\nkubectl describe node &lt;node-name&gt; | grep -A10 Allocatable\n\n<span class=\"hljs-comment\"># List all pods on a node<\/span>\nkubectl get pods --all-namespaces -o wide | grep &lt;node-name&gt;\n\n<span class=\"hljs-comment\"># PVC status<\/span>\nkubectl get pvc\n\n<span class=\"hljs-comment\"># CNI status<\/span>\nkubectl get pods -n kube-system | grep -E <span class=\"hljs-string\">'cni|calico|flannel'<\/span>\n\n<span class=\"hljs-comment\"># Resource quotas<\/span>\nkubectl describe resourcequota\nkubectl describe limitrange\n\n<span class=\"hljs-comment\"># Get pod spec with scheduler\/affinity\/tolerations<\/span>\nkubectl get pod &lt;pod-name&gt; -o yaml\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udded How to Fix Pending in General<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Start with <code>kubectl describe pod<\/code><\/strong><\/li>\n\n\n\n<li>If it says:\n<ul class=\"wp-block-list\">\n<li><code>Too many pods<\/code> \u2192 Increase <code>maxPods<\/code> or add nodes<\/li>\n\n\n\n<li><code>Insufficient cpu\/memory<\/code> \u2192 Reduce resource requests or free up node<\/li>\n\n\n\n<li><code>Taint<\/code> \u2192 Add toleration or remove taint<\/li>\n\n\n\n<li><code>PVC pending<\/code> \u2192 Fix volume<\/li>\n\n\n\n<li>No message \u2192 Check CNI\/DNS<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Here is a <strong>Bash script<\/strong> that checks for the <strong>20 most common reasons why Kubernetes pods are stuck in <code>Pending<\/code> state<\/strong>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u2705 It loops over all Pending pods and checks taints, resources, PVCs, tolerations, affinity, maxPods, etc.<\/p>\n\n\n\n<p>\ud83d\udce6 You can copy, save as <code>check-pending-pods.sh<\/code>, and run on your control-plane\/master node.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 <code>check-pending-pods.sh<\/code><\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">#!\/bin\/bash<\/span>\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"==========================\"<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83d\udd0d Checking Pending Pods...\"<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"==========================\"<\/span>\n\nPENDING_PODS=$(kubectl get pods --all-namespaces --field-selector=status.phase=Pending -o jsonpath=<span class=\"hljs-string\">'{range .items&#91;*]}{.metadata.namespace}{\" \"}{.metadata.name}{\"\\n\"}{end}'<\/span>)\n\n<span class=\"hljs-keyword\">if<\/span> &#91; -z <span class=\"hljs-string\">\"$PENDING_PODS\"<\/span> ]; then\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\u2705 No pending pods found.\"<\/span>\n  <span class=\"hljs-keyword\">exit<\/span> <span class=\"hljs-number\">0<\/span>\nfi\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"$PENDING_PODS\"<\/span> | <span class=\"hljs-keyword\">while<\/span> read <span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">pod<\/span>; <span class=\"hljs-keyword\">do<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\"<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83d\udd0d Analyzing pod: $pod in namespace: $namespace\"<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"------------------------------------------------\"<\/span>\n\n  <span class=\"hljs-comment\"># Describe pod<\/span>\n  kubectl describe pod $pod -n $namespace &gt; \/tmp\/pod_desc.txt\n\n  <span class=\"hljs-comment\"># 1. Check for failed scheduling<\/span>\n  grep -i <span class=\"hljs-string\">\"FailedScheduling\"<\/span> \/tmp\/pod_desc.txt\n\n  <span class=\"hljs-comment\"># 2. Check node selectors<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea NodeSelector:\"<\/span>\n  grep -A2 <span class=\"hljs-string\">\"Node-Selectors\"<\/span> \/tmp\/pod_desc.txt\n\n  <span class=\"hljs-comment\"># 3. Check tolerations<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Tolerations:\"<\/span>\n  grep -A5 <span class=\"hljs-string\">\"Tolerations:\"<\/span> \/tmp\/pod_desc.txt\n\n  <span class=\"hljs-comment\"># 4. Check affinity<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Affinity:\"<\/span>\n  kubectl get pod $pod -n $namespace -o jsonpath=<span class=\"hljs-string\">'{.spec.affinity}'<\/span> || <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"None\"<\/span>\n\n  <span class=\"hljs-comment\"># 5. Check resource requests<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Resource Requests:\"<\/span>\n  kubectl get pod $pod -n $namespace -o jsonpath=<span class=\"hljs-string\">'{range .spec.containers&#91;*]}{.name}{\" =&gt; CPU: \"}{.resources.requests.cpu}{\" | MEM: \"}{.resources.requests.memory}{\"\\n\"}{end}'<\/span>\n\n  <span class=\"hljs-comment\"># 6. Check PVCs<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea PVCs:\"<\/span>\n  PVCs=$(kubectl get pod $pod -n $namespace -o jsonpath=<span class=\"hljs-string\">'{.spec.volumes&#91;*].persistentVolumeClaim.claimName}'<\/span>)\n  <span class=\"hljs-keyword\">for<\/span> pvc in $PVCs; <span class=\"hljs-keyword\">do<\/span>\n    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"  \ud83d\udd04 PVC: $pvc =&gt; Status: $(kubectl get pvc $pvc -n $namespace -o jsonpath='{.status.phase}')\"<\/span>\n  done\n\n  <span class=\"hljs-comment\"># 7. Check scheduler<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Scheduler:\"<\/span>\n  kubectl get pod $pod -n $namespace -o jsonpath=<span class=\"hljs-string\">'{.spec.schedulerName}'<\/span>; <span class=\"hljs-keyword\">echo<\/span>\n\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\"<\/span>\ndone\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"===============================\"<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83d\udd0d Checking Node Conditions...\"<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"===============================\"<\/span>\n\n<span class=\"hljs-keyword\">for<\/span> node in $(kubectl get nodes -o name); <span class=\"hljs-keyword\">do<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\"<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Node: $node\"<\/span>\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"-----------\"<\/span>\n\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Taints:\"<\/span>\n  kubectl describe $node | grep Taint || <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"No taints\"<\/span>\n\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Allocatable Resources:\"<\/span>\n  kubectl describe $node | grep -A10 <span class=\"hljs-string\">\"Allocatable\"<\/span>\n\n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Max Pods Limit:\"<\/span>\n  kubectl describe $node | grep -A10 Allocatable | grep <span class=\"hljs-string\">\"pods\"<\/span>\n  \n  <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\ud83e\uddea Running Pods Count:\"<\/span>\n  nodeName=$(basename $node)\n  kubectl get pods --all-namespaces -o wide | grep $nodeName | wc -l\ndone\n\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\"<\/span>\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"\u2705 Done checking all pending pod conditions!\"<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83e\uddea How to Use<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Save the script:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">nano<\/span> <span class=\"hljs-selector-tag\">check-pending-pods<\/span><span class=\"hljs-selector-class\">.sh<\/span>\n# <span class=\"hljs-selector-tag\">Paste<\/span> <span class=\"hljs-selector-tag\">the<\/span> <span class=\"hljs-selector-tag\">code<\/span>\n<span class=\"hljs-selector-tag\">chmod<\/span> +<span class=\"hljs-selector-tag\">x<\/span> <span class=\"hljs-selector-tag\">check-pending-pods<\/span><span class=\"hljs-selector-class\">.sh<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Run the script:<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs\">.\/check-pending-pods.sh\n<\/code><\/span><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">\u2705 What it Checks<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pod scheduling failures<\/li>\n\n\n\n<li>Node selectors<\/li>\n\n\n\n<li>Tolerations<\/li>\n\n\n\n<li>Affinity\/anti-affinity<\/li>\n\n\n\n<li>CPU\/Memory resource requests<\/li>\n\n\n\n<li>PVC binding status<\/li>\n\n\n\n<li>Scheduler used<\/li>\n\n\n\n<li>Taints on nodes<\/li>\n\n\n\n<li>Allocatable and used pod count<\/li>\n\n\n\n<li>Max pod limits<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Below is a complete, production-grade list of all common reasons why a Kubernetes pod stays in Pending state, along with detailed solutions, commands, and how to verify and fix each&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-49943","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49943","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=49943"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49943\/revisions"}],"predecessor-version":[{"id":49944,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/49943\/revisions\/49944"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=49943"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=49943"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=49943"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}