<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubelet on Netdata</title><link>https://www.netdata.cloud/tags/kubelet/</link><description>Recent content in Kubelet on Netdata</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://www.netdata.cloud/tags/kubelet/index.xml" rel="self" type="application/rss+xml"/><item><title>K8s Kubelet Monitoring</title><link>https://www.netdata.cloud/monitoring-101/kubelet-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/monitoring-101/kubelet-monitoring/</guid><description>&lt;h2 id="what-is-k8s-kubelet"&gt;What is K8s Kubelet?&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kubelet"&gt;&lt;code&gt;Kubelet&lt;/code&gt;&lt;/a&gt; is an agent that runs on each node in the cluster. It makes sure that containers are running in a pod.&lt;/p&gt;&#10;&lt;h2 id="monitoring-k8s-kubelet-with-netdata"&gt;Monitoring K8s Kubelet with Netdata&lt;/h2&gt;&#10;&lt;p&gt;The prerequisite for monitoring K8s Kubelet with Netdata is to &lt;a href="https://learn.netdata.cloud/docs/cloud/get-started/"&gt;Netdata installed&lt;/a&gt; on your system.&lt;/p&gt;&#10;&lt;p&gt;Netdata auto discovers hundreds of services, and for those it doesn&amp;rsquo;t turning on manual discovery is a one line configuration. For more information on configuring Netdata for K8s Kubelet monitoring please read the collector &lt;a href="https://learn.netdata.cloud/docs/agent/collectors/go.d.plugin/modules/k8s_kubelet/"&gt;documentation&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Kubelet Monitoring</title><link>https://www.netdata.cloud/monitoring-101/k8s_kubelet-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/monitoring-101/k8s_kubelet-monitoring/</guid><description>&lt;h2 id="kubelet-monitoring"&gt;Kubelet Monitoring&lt;/h2&gt;&#10;&lt;p&gt;In today&amp;rsquo;s fast-paced DevOps environments, monitoring the &lt;a href="https://kubernetes.io/docs/concepts/overview/components/#kubelet"&gt;Kubelet&lt;/a&gt; effectively is crucial for maintaining healthy Kubernetes clusters. Understanding its metrics allows teams to ensure high availability and performance efficiency for their applications.&lt;/p&gt;&#10;&lt;h3 id="what-is-kubelet"&gt;What Is Kubelet?&lt;/h3&gt;&#10;&lt;p&gt;Kubelet is a core component of Kubernetes that runs on each node in the cluster. It ensures that containers are running as expected, watching for changes in Pod specifications and reporting back to the Kubernetes API server.&lt;/p&gt;</description></item><item><title>Kubernetes eviction cascade: when one node failure takes down the cluster</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-eviction-cascade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-eviction-cascade/</guid><description>&lt;p&gt;You see pods entering Evicted status across multiple nodes. Nodes flap between Ready and MemoryPressure or DiskPressure. The scheduler keeps placing replacements, but the new pods are evicted again before they become ready. Workloads never stabilize, and every remediation attempt seems to make the cluster more volatile.&lt;/p&gt;&#10;&lt;p&gt;This is a node-pressure eviction cascade. It happens when the scheduler&amp;rsquo;s view of capacity diverges from the kubelet&amp;rsquo;s view. One node under pressure evicts pods; those pods land on other nodes that are also overcommitted; those nodes tip into pressure and evict more pods. The result is a cluster-wide feedback loop that looks like a resource shortage but is often a scheduling and configuration problem.&lt;/p&gt;</description></item><item><title>Kubernetes kubelet certificate expired: detection, rotation, and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-certificate-expired/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-certificate-expired/</guid><description>&lt;p&gt;A healthy node suddenly shows NotReady. Pods keep running, but the kubelet stops reporting status. &lt;code&gt;kubectl logs&lt;/code&gt; and &lt;code&gt;kubectl exec&lt;/code&gt; fail with TLS errors. The cluster event stream is quiet. This is usually an expired kubelet client certificate that failed to rotate.&lt;/p&gt;&#10;&lt;p&gt;Every kubelet maintains two independent TLS credentials: a client certificate that authenticates it to the kube-apiserver, and a serving certificate that secures the kubelet&amp;rsquo;s own HTTPS endpoints. Both typically have a one-year validity. When the client certificate expires, the kubelet cannot authenticate to the API server. The node goes NotReady. Workloads may continue running, but they are unmanaged: no evictions, no probe execution, no status updates, and no new pod scheduling. When the serving certificate expires, metrics-server, &lt;code&gt;kubectl exec&lt;/code&gt;, and &lt;code&gt;kubectl logs&lt;/code&gt; break even if the node is otherwise Ready.&lt;/p&gt;</description></item><item><title>Kubernetes kubelet memory leak: detection and OOM cycle</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-memory-leak/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-memory-leak/</guid><description>&lt;p&gt;Kubelet memory growth ends one of two ways: the process hits its cgroup limit or the node runs out of memory. The kernel OOM killer sends SIGKILL. Systemd restarts kubelet, but the new process has cold caches and immediately runs a full reconciliation pass: relisting all containers, re-syncing every pod status, and re-attaching every volume. On a busy node, that burst spikes CPU and memory, which can push the fresh kubelet back over the edge and create a Ready/NotReady flap cycle.&lt;/p&gt;</description></item><item><title>Kubernetes kubelet not responding: PLEG, runtime, and certificate issues</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-not-responding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-not-responding/</guid><description>&lt;p&gt;&lt;a href="https://www.netdata.cloud/guides/kubernetes/"&gt;A Kubernetes node&lt;/a&gt; flipping to NotReady while containers keep running is one of the most confusing production failure modes. The kubelet is the node agent that reconciles API server intent with running containers. When it stops responding or reports unhealthy subsystems, the control plane marks the node NotReady and reschedules workloads, even though the data plane may still serve traffic.&lt;/p&gt;&#10;&lt;p&gt;This guide covers three failure domains: Pod Lifecycle Event Generator (PLEG) stalls, container runtime disconnections, and kubelet certificate expiration or rotation failures. Distinguish these symptoms, run safe targeted diagnostics, and apply fixes without blind node reboots.&lt;/p&gt;</description></item><item><title>Kubernetes Monitoring Checklist: The Signals Every Production Cluster Needs</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-monitoring-checklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-monitoring-checklist/</guid><description>&lt;p&gt;This article is a reference checklist for senior engineers who are wiring up, auditing, or hardening monitoring for a production Kubernetes cluster. It assumes you already understand the control plane architecture and focuses on what to collect, where to find it, and which symptoms matter. Use it during greenfield instrumentation, post-incident gap analysis, or routine health audits.&lt;/p&gt;&#10;&lt;p&gt;The signals are grouped by domain. Each entry leads with a short noun phrase, followed by one sentence explaining why it matters, and a concrete warning sign to alert on. Thresholds are drawn from upstream SLOs, kubelet defaults, and etcd operational limits documented in the Kubernetes source and production playbooks. If you run a managed service such as EKS, GKE, or AKS, treat control-plane metrics as provider-mediated; many etcd and API server internals are opaque in those environments.&lt;/p&gt;</description></item><item><title>Kubernetes node CPU saturation: load, throttling, and runqueue depth</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-cpu-saturation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-cpu-saturation/</guid><description>&lt;p&gt;Application latency climbs and pods slow down. &lt;code&gt;kubectl top nodes&lt;/code&gt; reports 70 percent CPU, so you assume headroom exists. It does not. CPU percent is a time-average that masks micro-bursts, runqueue backlog, and CFS throttling. A container can throttle to a crawl while node utilization looks comfortable, and a node can show 50 percent utilization with every runnable thread queued behind a noisy neighbor. Distinguish node-level CPU contention from limit-induced throttling using runqueue depth, CFS bandwidth metrics, and Pressure Stall Information (PSI).&lt;/p&gt;</description></item><item><title>Kubernetes node DiskPressure: detection, eviction, and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-disk-pressure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-disk-pressure/</guid><description>&lt;p&gt;A node reporting DiskPressure is actively shedding workloads. The kubelet has detected that nodefs or imagefs has crossed an eviction threshold. It is garbage collecting images, terminating pods, and applying the &lt;code&gt;node.kubernetes.io/disk-pressure&lt;/code&gt; taint to block new scheduling. Existing pods may continue running, but any pod requiring disk for logs, emptyDir volumes, or image pulls is at risk.&lt;/p&gt;&#10;&lt;p&gt;Disk pressure builds predictably, unlike memory pressure. This guide covers how the kubelet evaluates disk pressure, how to distinguish nodefs from imagefs exhaustion, how to find the specific consumer, and how to recover without causing a cascading eviction loop.&lt;/p&gt;</description></item><item><title>Kubernetes node MemoryPressure: detection, eviction order, and prevention</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-memory-pressure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-memory-pressure/</guid><description>&lt;p&gt;Before adding RAM, determine whether kubelet is evicting because workloads are genuinely starving or because memory requests are misaligned with reality.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What this means&lt;/h2&gt;&#10;&lt;p&gt;Kubelet evaluates &lt;code&gt;memory.available&lt;/code&gt; against an eviction threshold. On Linux the default hard threshold is &lt;code&gt;memory.available &amp;lt; 100Mi&lt;/code&gt;. Kubelet derives this from cgroup stats, not &lt;code&gt;free -m&lt;/code&gt;. It measures working-set memory (RSS plus active file-backed pages) and subtracts that from total capacity. When the threshold is crossed, kubelet sets the node condition &lt;code&gt;MemoryPressure=True&lt;/code&gt; and adds the taint &lt;code&gt;node.kubernetes.io/memory-pressure:NoSchedule&lt;/code&gt;. New pods are blocked from scheduling until the condition clears.&lt;/p&gt;</description></item><item><title>Kubernetes node NotReady: kubelet, runtime, and network diagnosis</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-not-ready/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-not-ready/</guid><description>&lt;p&gt;When &lt;a href="https://www.netdata.cloud/guides/kubernetes/"&gt;a Kubernetes node&lt;/a&gt; becomes NotReady, existing containers usually keep running, but the cluster stops scheduling new pods, removes endpoints from Services, and eventually evicts workloads after the pod eviction timeout. Root causes fall into three domains: kubelet health, container runtime responsiveness, and CNI or control plane connectivity.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What This Means&lt;/h2&gt;&#10;&lt;p&gt;Kubernetes marks a node NotReady when the kubelet Ready condition is False, or when the node controller has not received a heartbeat within &lt;code&gt;--node-monitor-grace-period&lt;/code&gt; (default 40 seconds). The node receives the &lt;code&gt;node.kubernetes.io/not-ready:NoSchedule&lt;/code&gt; taint. If the condition persists longer than the pod eviction timeout (default 5 minutes), the controller manager marks pods on the node for rescheduling.&lt;/p&gt;</description></item><item><title>Kubernetes node PIDPressure: detection and remediation</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-pid-pressure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-node-pid-pressure/</guid><description>&lt;p&gt;PID exhaustion is a cliff-edge failure: once the kernel cannot fork, containers fail to start, health checks fail, and ssh to the node may hang. Kubernetes surfaces this through the PIDPressure node condition, but many clusters ship without PID-based eviction thresholds. Without them, the first symptom is usually &lt;code&gt;EAGAIN&lt;/code&gt; or &lt;code&gt;ENOMEM&lt;/code&gt; from fork failures, not a kubelet eviction.&lt;/p&gt;&#10;&lt;p&gt;This guide shows how to detect PIDPressure before it triggers an outage, distinguish between application leaks, runtime shim accumulation, and kernel limits, and remediate the root cause. You will correlate node-level PID utilization with specific pods, validate kubelet cgroup enforcement, and configure thresholds that provide lead time.&lt;/p&gt;</description></item><item><title>Kubernetes Operations Guides</title><link>https://www.netdata.cloud/guides/kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/</guid><description>Learn what actually breaks in production Kubernetes clusters, how to diagnose it, and what to monitor so the next incident is shorter than the last one.</description></item><item><title>Kubernetes PLEG is not healthy: runtime stalls and node degradation</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pleg-not-healthy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pleg-not-healthy/</guid><description>&lt;p&gt;A node suddenly flips to NotReady with the message &amp;ldquo;PLEG is not healthy.&amp;rdquo; Containers on the node keep running, but the control plane evicts workloads and reschedules them elsewhere. New pods cannot start, and existing pods run without health checks or status updates. This is one of the most common kubelet failure modes in production.&lt;/p&gt;&#10;&lt;p&gt;The Pod Lifecycle Event Generator (PLEG) is the kubelet subsystem that polls the container runtime every second and emits events when containers start, stop, or change state. When the runtime becomes slow or unresponsive, the PLEG relist loop stalls. If the elapsed time since the last successful relist exceeds three minutes, kubelet declares PLEG unhealthy, marks the node NotReady, and skips pod synchronization.&lt;/p&gt;</description></item><item><title>Kubernetes pod CrashLoopBackOff: causes, diagnosis, and fixes</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-crashloopbackoff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-crashloopbackoff/</guid><description>&lt;p&gt;CrashLoopBackOff means a container in a Pod has terminated after starting, and the kubelet is delaying the next restart with exponential backoff. The status describes behavior, not root cause. Underlying failures include application panics, OOM kills, misconfigured liveness probes, missing secrets, or node-level resource pressure.&lt;/p&gt;&#10;&lt;p&gt;Use pod status, previous container logs, node conditions, and kubelet events to narrow the cause. Monitor restart rate, node pressure, and probe failures to catch loops before they degrade capacity.&lt;/p&gt;</description></item><item><title>Kubernetes pod creation fails: admission, quota, and CRI errors</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-creation-fails/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-creation-fails/</guid><description>&lt;p&gt;Pre-scheduling failures happen when the API server or container runtime rejects a Pod before the scheduler assigns it. You apply a Deployment, but &lt;code&gt;kubectl get pods&lt;/code&gt; returns nothing. Or a Pod hangs in &lt;code&gt;ImagePullBackOff&lt;/code&gt; before &lt;code&gt;ContainerCreating&lt;/code&gt;. These cases surface as missing Pods, &lt;code&gt;FailedCreate&lt;/code&gt; events on ReplicaSets or Jobs, or explicit API rejections. This guide covers admission control, quota and policy limits, and CRI-level image pull and sandbox failures.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What this means&lt;/h2&gt;&#10;&lt;p&gt;Pod creation is a pipeline. The API server first authenticates and authorizes the request, then runs the Pod spec through admission controllers: mutating webhooks, validating webhooks, LimitRanger, ResourceQuota, and PodSecurity. If any controller rejects the request, the Pod object is never persisted to etcd. If admission succeeds, the object is stored, the scheduler assigns a node, and the kubelet asks the container runtime (via CRI) to create the pod sandbox and pull images. Failures in this guide happen before the pod is running or scheduled.&lt;/p&gt;</description></item><item><title>Kubernetes pod Evicted: detection, root cause, and prevention</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-evicted/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-evicted/</guid><description>&lt;p&gt;Pods with status &lt;code&gt;Evicted&lt;/code&gt; are not application crashes. They are the kubelet&amp;rsquo;s emergency response to node-level resource pressure. When memory, disk, inodes, or PIDs approach exhaustion, the kubelet terminates pods to reclaim resources and protect node availability. The pod phase changes to &lt;code&gt;Failed&lt;/code&gt; with reason &lt;code&gt;Evicted&lt;/code&gt;, and the node reports conditions such as &lt;code&gt;MemoryPressure&lt;/code&gt; or &lt;code&gt;DiskPressure&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;This guide covers node-pressure eviction triggered by the kubelet, not voluntary disruption from &lt;code&gt;kubectl drain&lt;/code&gt; or PodDisruptionBudget enforcement.&lt;/p&gt;</description></item><item><title>Kubernetes pod exits immediately: how to diagnose it</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-exits-immediately/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-exits-immediately/</guid><description>&lt;p&gt;When a pod shows &lt;code&gt;Completed&lt;/code&gt; or &lt;code&gt;Error&lt;/code&gt; with zero restarts, the container exited on its first run. The diagnostic evidence lives in termination metadata, not in a growing restart count. This is distinct from &lt;code&gt;CrashLoopBackOff&lt;/code&gt;, where the kubelet has already applied exponential backoff after multiple restarts.&lt;/p&gt;&#10;&lt;p&gt;This guide covers how to distinguish a clean exit, an OOM kill, an application crash, and a configuration error using only the kubelet&amp;rsquo;s reported state and the previous container logs, plus which node-level and control-plane signals to check when the container produced no logs.&lt;/p&gt;</description></item><item><title>Kubernetes pod ImagePullBackOff: registry, auth, and network diagnosis</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-imagepullbackoff/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-imagepullbackoff/</guid><description>&lt;p&gt;&lt;code&gt;ImagePullBackOff&lt;/code&gt; means the kubelet cannot pull a required image. After each &lt;code&gt;ErrImagePull&lt;/code&gt; failure, the kubelet retries with exponential backoff capped at five minutes. When &lt;code&gt;serializeImagePulls&lt;/code&gt; is true, a single slow pull blocks every subsequent pull on that node. Read the exact error from the CRI in pod events, test the registry directly from the node, and fix the root cause without blindly recreating pods.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What this means&lt;/h2&gt;&#10;&lt;p&gt;The kubelet asks the container runtime to pull any image not cached locally. The runtime resolves the registry, authenticates, downloads layers, and unpacks them into node storage. A failure at any step returns a CRI error that the kubelet surfaces as a pod event. &lt;code&gt;kubectl get pod&lt;/code&gt; shows only the state; the reason lives in the events.&lt;/p&gt;</description></item><item><title>Kubernetes pod OOMKilled: cgroup limits, evictions, and fixes</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-oomkilled/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-oomkilled/</guid><description>&lt;p&gt;A pod status of &lt;code&gt;OOMKilled&lt;/code&gt; means the container restarted after the kernel sent SIGKILL because it could not satisfy a memory allocation. There is no graceful shutdown.&lt;/p&gt;&#10;&lt;p&gt;Distinguish whether the kill happened at the container cgroup level (a limit you set) or at the node level (a system-wide shortage). Then separate kernel OOM kills from kubelet evictions, identify the correct fix, and prevent recurrence without guessing at memory limits.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What this means&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;OOMKilled&lt;/code&gt; means the Linux OOM killer selected a process in your container and terminated it with SIGKILL (signal 9). Exit code 137 (128 + 9) often maps to &lt;code&gt;OOMKilled&lt;/code&gt;, but the code alone is ambiguous: it can also result from a manual &lt;code&gt;docker kill&lt;/code&gt; or an escalated graceful termination. Verify the pod status &lt;code&gt;Reason&lt;/code&gt; field.&lt;/p&gt;</description></item><item><title>Kubernetes pod stuck ContainerCreating: volume, network, and image issues</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-containercreating/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-containercreating/</guid><description>&lt;p&gt;A pod stuck in &lt;code&gt;ContainerCreating&lt;/code&gt; never produces logs or readiness events. The kubelet accepted the spec but blocked during initialization after scheduling and before the container runtime starts the user process. The dominant failure domains are volume mount deadlocks, CNI sandbox creation failures, and image pull problems. They all surface the same status but need different fixes. This guide shows how to identify the stuck subsystem and resolve it.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What this means&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;ContainerCreating&lt;/code&gt; is the phase where the kubelet pulls the image, creates the pod sandbox via CRI, attaches and mounts volumes, injects ConfigMaps and Secrets, and starts the container. These steps run largely synchronously in the pod worker. If a mount hangs, a CNI plugin errors, or the registry rejects the pull, the worker blocks and the pod stays in &lt;code&gt;ContainerCreating&lt;/code&gt;. The node condition can remain &lt;code&gt;Ready&lt;/code&gt; because the kubelet sync loop and PLEG are still healthy, so cluster monitoring may miss the problem. Identifying whether the block is in storage, network, or images is the first step.&lt;/p&gt;</description></item><item><title>Kubernetes pod stuck on volume mount: CSI, permissions, and timeouts</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-volume-mount-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-volume-mount-failures/</guid><description>&lt;p&gt;You scale a StatefulSet and the new pods sit in &lt;code&gt;ContainerCreating&lt;/code&gt; for ten minutes. The node is &lt;code&gt;Ready&lt;/code&gt;. The CSI driver pods are running. &lt;code&gt;kubectl describe&lt;/code&gt; shows no &lt;code&gt;FailedMount&lt;/code&gt; events, yet the containers never start. The absence of volume events often misleads operators into checking image registries or resource quotas instead of the storage path. The kubelet volume manager is blocked somewhere between attach and mount, and Kubernetes will not retry fast enough to hide the problem.&lt;/p&gt;</description></item><item><title>Kubernetes pod stuck Terminating: finalizers, grace periods, and force delete</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-stuck-terminating/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-stuck-terminating/</guid><description>&lt;p&gt;A pod stuck in &lt;code&gt;Terminating&lt;/code&gt; stays visible in the &lt;a href="https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-slow/"&gt;API server&lt;/a&gt; after &lt;code&gt;kubectl delete&lt;/code&gt;, sometimes for minutes or hours. Usually a finalizer blocks removal, a CSI volume is still attached, or the container is ignoring SIGTERM. Force deleting without diagnosis orphans containers and can violate StatefulSet guarantees. Check the signals first, then decide whether to wait, patch a finalizer, or force delete.&lt;/p&gt;&#10;&lt;h2 id="what-this-means"&gt;What This Means&lt;/h2&gt;&#10;&lt;p&gt;When you delete a pod, the API server sets &lt;code&gt;metadata.deletionTimestamp&lt;/code&gt; and starts a graceful deletion window controlled by &lt;code&gt;terminationGracePeriodSeconds&lt;/code&gt; (default 30). The kubelet executes any &lt;code&gt;preStop&lt;/code&gt; hooks, sends SIGTERM to all containers, and waits up to the grace period before sending SIGKILL.&lt;/p&gt;</description></item></channel></rss>