<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes Operations Guides on Netdata</title><link>https://www.netdata.cloud/guides/kubernetes/</link><description>Recent content in Kubernetes Operations Guides on Netdata</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://www.netdata.cloud/guides/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>How the Kubernetes control plane works: a mental model for operators</title><link>https://www.netdata.cloud/guides/kubernetes/how-kubernetes-control-plane-works/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/how-kubernetes-control-plane-works/</guid><description>&lt;h1 id="how-the-kubernetes-control-plane-works-a-mental-model-for-operators">How the Kubernetes control plane works: a mental model for operators&lt;/h1>
&lt;p>The Kubernetes control plane is often drawn as a single box labeled &amp;ldquo;Master.&amp;rdquo; In production, that abstraction fails the moment kubectl hangs, a node disappears, or a Deployment stays pending. The control plane is not a monolith. It is a pipeline of specialized components that hand off state through a single API server, and understanding those handoffs is what lets you triage a cluster outage without guessing.&lt;/p></description></item><item><title>Kubernetes admission webhook death spiral: detection and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-webhook-death-spiral/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-webhook-death-spiral/</guid><description>&lt;h1 id="kubernetes-admission-webhook-death-spiral-detection-and-recovery">Kubernetes admission webhook death spiral: detection and recovery&lt;/h1>
&lt;p>You deploy a mutating webhook to enforce policy. Later, a node drains and the webhook pod evicts. Now no pods can start, including the webhook&amp;rsquo;s own replacement. The cluster does not crash, but it stops moving. Every &lt;code>kubectl apply&lt;/code> hangs. Horizontal autoscalers freeze. Rolling updates stall. This is the admission webhook death spiral: a circular dependency where the webhook must admit a pod it itself requires.&lt;/p></description></item><item><title>Kubernetes anonymous API access: detection, audit, and lockdown</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-anonymous-access-detection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-anonymous-access-detection/</guid><description>&lt;h1 id="kubernetes-anonymous-api-access-detection-audit-and-lockdown">Kubernetes anonymous API access: detection, audit, and lockdown&lt;/h1>
&lt;p>Anonymous requests to the Kubernetes API server are authenticated as &lt;code>system:anonymous&lt;/code> and evaluated as part of the &lt;code>system:unauthenticated&lt;/code> group. On many self-managed clusters this behavior is enabled by default, which means requests that arrive without a valid client certificate, bearer token, or other credential are passed to the authorization layer instead of being rejected immediately. Public discovery endpoints and health checks are common legitimate uses, but anonymous access to namespaced resources, secrets, or RBAC objects is a direct security exposure.&lt;/p></description></item><item><title>Kubernetes API server audit logging: policy, backends, and forensics</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-audit-logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-audit-logging/</guid><description>&lt;h1 id="kubernetes-api-server-audit-logging-policy-backends-and-forensics">Kubernetes API server audit logging: policy, backends, and forensics&lt;/h1>
&lt;p>Kubernetes API server audit logging is the authoritative record of every request that reaches the control plane. It captures the identity of the caller, the resource and verb, the timestamp, the stage, and the outcome. Without it, a security investigation into unauthorized access, a compliance audit, or a postmortem into a failed certificate rotation is built on inference rather than evidence.&lt;/p></description></item><item><title>Kubernetes API server certificate rotation: detection and grace handling</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-certificate-rotation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-certificate-rotation/</guid><description>&lt;h1 id="kubernetes-api-server-certificate-rotation-detection-and-grace-handling">Kubernetes API server certificate rotation: detection and grace handling&lt;/h1>
&lt;p>Kubernetes control plane certificates created by kubeadm expire after one year. The API server does not auto-rotate its serving certificate. When it expires, etcd rejects control plane connections, kubelets cannot authenticate, and the cluster becomes unreachable. The failure is sudden and total.&lt;/p>
&lt;p>This guide covers kubeadm-managed clusters where you own the control plane. Distinguish between the API server serving certificate and the broader control plane bundle, detect expiration before the outage, and renew with minimal disruption.&lt;/p></description></item><item><title>Kubernetes API server etcd latency: detection and cascading failures</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-etcd-latency/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-etcd-latency/</guid><description>&lt;h1 id="kubernetes-api-server-etcd-latency-detection-and-cascading-failures">Kubernetes API server etcd latency: detection and cascading failures&lt;/h1>
&lt;p>When etcd slows down, the entire control plane slows with it. A few extra milliseconds on disk fsync turns into hung kubectl commands, backed-up controller queues, and eventually a cluster that cannot schedule pods or update endpoints. Detect the etcd latency cascade, confirm whether storage is the root cause, and break the feedback loop before the cluster becomes effectively read-only.&lt;/p>
&lt;h2 id="what-this-means">What this means&lt;/h2>
&lt;p>etcd serializes every Kubernetes mutation. Every API server write becomes a Raft proposal that must fsync to the WAL before etcd acknowledges it. When the disk under etcd is slow, every fsync waits longer. The API server holds mutating requests open until etcd responds. Requests pile up in the inflight queue. Once the queue hits the limit, the API server returns 429 Too Many Requests. Controllers that depend on writes (scheduler, replica set controller, and others) fall behind and retry. Retries generate more write load. The result is a feedback loop: slow disk -&amp;gt; slow etcd -&amp;gt; slow API server -&amp;gt; retry storm -&amp;gt; amplified etcd load.&lt;/p></description></item><item><title>Kubernetes API server FlowSchemas and PriorityLevels: design and tuning</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-flow-schemas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-flow-schemas/</guid><description>&lt;h1 id="kubernetes-api-server-flowschemas-and-prioritylevels-design-and-tuning">Kubernetes API server FlowSchemas and PriorityLevels: design and tuning&lt;/h1>
&lt;p>Before Kubernetes 1.20, the API server protected itself with two global hard limits: &lt;code>--max-requests-inflight&lt;/code> and &lt;code>--max-mutating-requests-inflight&lt;/code>. Every request, whether a kubelet heartbeat or a runaway controller LIST, competed for the same pool. API Priority and Fairness (APF), enabled by default since 1.20, replaces that coarse model with a two-stage classification and fair-queuing system. It separates requests into priority levels, isolates flows within each level, and rejects or queues traffic before it can starve critical control plane operations.&lt;/p></description></item><item><title>Kubernetes API server memory pressure: OOM cycle and tuning</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-memory-pressure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-memory-pressure/</guid><description>&lt;h1 id="kubernetes-api-server-memory-pressure-oom-cycle-and-tuning">Kubernetes API server memory pressure: OOM cycle and tuning&lt;/h1>
&lt;p>Your control plane is crash-looping. The kube-apiserver process climbs toward its container memory limit, the Go garbage collector stalls trying to reclaim space, and the kernel OOM killer terminates it. The replacement pod starts with cold caches; every connected client immediately re-lists watched resources, and memory spikes again before caches warm. The root cause is usually a mismatch between how the API server uses memory and how much headroom you have given it.&lt;/p></description></item><item><title>Kubernetes API server rate limiting: APF priority levels and starvation</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-rate-limited/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-rate-limited/</guid><description>&lt;h1 id="kubernetes-api-server-rate-limiting-apf-priority-levels-and-starvation">Kubernetes API server rate limiting: APF priority levels and starvation&lt;/h1>
&lt;p>Your API server is running. &lt;code>/healthz&lt;/code> returns 200. &lt;code>/readyz&lt;/code> passes. Yet nodes drop to &lt;code>NotReady&lt;/code>, the scheduler stops placing pods, and controller logs fill with &lt;code>context deadline exceeded&lt;/code>. The cluster is not down, but it is frozen. This pattern often points to API Priority and Fairness (APF) starvation: low-priority traffic consumes the API server&amp;rsquo;s concurrency budget, and critical control plane requests queue or get rejected.&lt;/p></description></item><item><title>Kubernetes API server slow or unresponsive: causes and fixes</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-slow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-slow/</guid><description>&lt;h1 id="kubernetes-api-server-slow-or-unresponsive-causes-and-fixes">Kubernetes API server slow or unresponsive: causes and fixes&lt;/h1>
&lt;p>When &lt;code>kubectl&lt;/code> hangs, controllers log &lt;code>context deadline exceeded&lt;/code>, and deployments stall, the Kubernetes API server is usually the bottleneck. It is the single funnel for every read and write to cluster state. Slowness propagates to scheduling, pod lifecycle, service discovery, and external automation.&lt;/p>
&lt;p>This article covers operational causes and gives a step-by-step diagnostic flow to run during an incident. Use it to distinguish etcd latency, admission webhook stalls, request saturation, and memory pressure.&lt;/p></description></item><item><title>Kubernetes API server watch storm: re-list cascades and connection floods</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-watch-storm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-watch-storm/</guid><description>&lt;h1 id="kubernetes-api-server-watch-storm-re-list-cascades-and-connection-floods">Kubernetes API server watch storm: re-list cascades and connection floods&lt;/h1>
&lt;p>A sudden wall of LIST requests pins API server CPU, climbs memory, spikes etcd read latency, and lags controllers. The culprit is usually a watch storm: hundreds or thousands of clients simultaneously re-listing because their watch connections failed or fell behind. Each re-list triggers an expensive etcd range scan and serializes all matching objects. Under load, this saturates CPU, fills network bandwidth, and can trigger APF throttling or memory pressure. If the API server restarts before the storm subsides, the cycle repeats.&lt;/p></description></item><item><title>Kubernetes bound service account tokens: rotation, audience, and expiry</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-bound-service-account-tokens/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-bound-service-account-tokens/</guid><description>&lt;h1 id="kubernetes-bound-service-account-tokens-rotation-audience-and-expiry">Kubernetes bound service account tokens: rotation, audience, and expiry&lt;/h1>
&lt;p>Pods fail with 401 Unauthorized, CSI volume mounts hang with token errors, or security audits surface long-lived credentials that never rotate. Bound tokens are projected, audience-scoped, and short-lived. Legacy tokens are static Secrets that persist forever. After Kubernetes 1.24, both coexist in most upgraded clusters. This guide covers the TokenRequest API lifecycle, kubelet rotation behavior, audience binding, and version-specific changes from 1.24 through 1.33 to help you diagnose auth failures and remove stale credentials safely.&lt;/p></description></item><item><title>Kubernetes conntrack exhaustion: dropped connections under load</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-conntrack-exhaustion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-conntrack-exhaustion/</guid><description>&lt;h1 id="kubernetes-conntrack-exhaustion-dropped-connections-under-load">Kubernetes conntrack exhaustion: dropped connections under load&lt;/h1>
&lt;p>Intermittent connection timeouts under load in Kubernetes often trace to a full nf_conntrack table on the node. Existing TCP sessions stay open, but new connections fail silently. DNS resolution becomes unreliable. Application logs show timeouts to healthy dependencies. The root cause is usually not the application, network policy, or CNI, but kernel connection tracking exhaustion.&lt;/p>
&lt;p>Every connection that traverses kube-proxy NAT rules creates an entry in the node&amp;rsquo;s nf_conntrack table. This finite, node-level table is shared by all workloads and invisible to most application monitoring. When it fills, the kernel drops new connection attempts without sending a TCP reset or ICMP error. The application sees a timeout.&lt;/p></description></item><item><title>Kubernetes container runtime shim failures: containerd, CRI-O troubleshooting</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-runtime-shim-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-runtime-shim-failures/</guid><description>&lt;h1 id="kubernetes-container-runtime-shim-failures-containerd-cri-o-troubleshooting">Kubernetes container runtime shim failures: containerd, CRI-O troubleshooting&lt;/h1>
&lt;p>Pods stuck in &lt;code>ContainerCreating&lt;/code>, nodes flapping &lt;code>NotReady&lt;/code>, and PLEG timeouts that clear only after a node reboot usually point to the container runtime shim layer, not the kubelet or network. The shim sits between the kubelet and the low-level runtime. When it hangs, crashes, or leaks, the kubelet cannot enumerate containers, start sandboxes, or reap terminated pods. Existing containers may keep running, but the node stops accepting new work.&lt;/p></description></item><item><title>Kubernetes controller-manager leader election failures</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-controller-manager-leader-election/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-controller-manager-leader-election/</guid><description>&lt;h1 id="kubernetes-controller-manager-leader-election-failures">Kubernetes controller-manager leader election failures&lt;/h1>
&lt;p>Your Deployment has stopped scaling. Nodes cordoned hours ago are still draining. Garbage collection is paused, and orphaned volumes are not being cleaned up. The kube-controller-manager runs these reconciliation loops, and in an HA cluster only the leader performs work. When leader election fails, the controller-manager exits, and the control plane stops acting on desired state. Existing workloads keep running, but nothing new is managed.&lt;/p></description></item><item><title>Kubernetes CSI driver failures: detection, recovery, and version skew</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-csi-driver-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-csi-driver-failures/</guid><description>&lt;h1 id="kubernetes-csi-driver-failures-detection-recovery-and-version-skew">Kubernetes CSI driver failures: detection, recovery, and version skew&lt;/h1>
&lt;p>When a workload pod hangs in &lt;code>ContainerCreating&lt;/code> with &lt;code>FailedMount&lt;/code> or &lt;code>FailedAttach&lt;/code> events, the root cause is often a CSI driver pod that has crashed, a node plugin that is missing on the target node, or a version mismatch between the driver and its sidecars. Unlike application pods, CSI drivers sit on the critical path for every volume operation. Their failure is not isolated; it blocks scheduling, provisioning, and recovery.&lt;/p></description></item><item><title>Kubernetes DaemonSet pods Pending: scheduling and tolerations</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-daemonset-pods-pending/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-daemonset-pods-pending/</guid><description>&lt;h1 id="kubernetes-daemonset-pods-pending-scheduling-and-tolerations">Kubernetes DaemonSet pods Pending: scheduling and tolerations&lt;/h1>
&lt;p>A DaemonSet pod in &lt;code>Pending&lt;/code> on a node where it should run is a scheduling failure, not a workload crash. Since Kubernetes 1.18, DaemonSet pods pass through the default scheduler like any other pod. The DaemonSet controller creates the pod and pins it to a target node via &lt;code>nodeAffinity&lt;/code>, but the scheduler still evaluates predicates: taints, tolerations, resource requests, and node state. If the scheduler rejects the pod, it stays &lt;code>Pending&lt;/code>. The controller will not create a replacement; it waits for the scheduler to succeed.&lt;/p></description></item><item><title>Kubernetes Deployment rollout stuck: stalled rollouts and ready replicas</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-deployment-rollout-stuck/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-deployment-rollout-stuck/</guid><description>&lt;h1 id="kubernetes-deployment-rollout-stuck-stalled-rollouts-and-ready-replicas">Kubernetes Deployment rollout stuck: stalled rollouts and ready replicas&lt;/h1>
&lt;p>A Deployment rollout that stalls is a silent capacity leak. The old ReplicaSet scales down, the new ReplicaSet stops halfway, and &lt;code>kubectl rollout status&lt;/code> blocks indefinitely. Kubernetes does not automatically recover. The controller sets &lt;code>ProgressDeadlineExceeded&lt;/code> only after &lt;code>progressDeadlineSeconds&lt;/code> elapses, and takes no corrective action. You need to distinguish between a Pod lifecycle blockage, a readiness probe or gate failure, and a rare controller bug that freezes the rollout entirely.&lt;/p></description></item><item><title>Kubernetes DNS resolution failures inside pods</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-dns-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-dns-failures/</guid><description>&lt;h1 id="kubernetes-dns-resolution-failures-inside-pods">Kubernetes DNS resolution failures inside pods&lt;/h1>
&lt;p>DNS failures inside pods break service discovery. A single overloaded CoreDNS replica or saturated conntrack table on one node can look like a multi-service outage. Before fixing, determine whether the failure is cluster-wide, node-specific, or workload-specific.&lt;/p>
&lt;h2 id="what-this-means">What this means&lt;/h2>
&lt;p>Kubernetes injects an &lt;code>/etc/resolv.conf&lt;/code> into every pod that points to the cluster DNS service, typically CoreDNS. CoreDNS resolves cluster-internal names via the kubernetes plugin and forwards external queries to an upstream resolver. A failure at any point produces the same symptom: the name cannot be resolved.&lt;/p></description></item><item><title>Kubernetes etcd defragmentation: when, how, and what breaks</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-etcd-defragmentation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-etcd-defragmentation/</guid><description>&lt;h1 id="kubernetes-etcd-defragmentation-when-how-and-what-breaks">Kubernetes etcd defragmentation: when, how, and what breaks&lt;/h1>
&lt;p>etcd&amp;rsquo;s database file grows over time even when you are not adding objects. Compaction removes old revisions logically, but the bbolt backend does not shrink the file on disk. Without defragmentation, the gap between physical file size and actual data footprint widens until the cluster hits a &lt;code>NOSPACE&lt;/code> alarm and rejects all writes. This guide covers measuring that gap, sequencing defragmentation across an HA cluster without triggering leader elections, and the monitoring signals that predict when you need to act.&lt;/p></description></item><item><title>Kubernetes etcd disk fsync latency: detection and tuning</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-etcd-disk-fsync/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-etcd-disk-fsync/</guid><description>&lt;h1 id="kubernetes-etcd-disk-fsync-latency-detection-and-tuning">Kubernetes etcd disk fsync latency: detection and tuning&lt;/h1>
&lt;p>etcd serializes every Kubernetes write. When disk fsync latency rises, Raft heartbeats stall, leaders step down, and the API server returns 500s and 429s while controllers retry into a death spiral. Unlike CPU or memory pressure, etcd disk latency is invisible until it is catastrophic. This guide shows how to detect it early, isolate the root cause between storage hardware, database size, and configuration, and tune the cluster to survive production load.&lt;/p></description></item><item><title>Kubernetes etcd snapshot failures: backup, restore, and verification</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-etcd-snapshot-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-etcd-snapshot-failures/</guid><description>&lt;h1 id="kubernetes-etcd-snapshot-failures-backup-restore-and-verification">Kubernetes etcd snapshot failures: backup, restore, and verification&lt;/h1>
&lt;p>An etcd snapshot failure usually surfaces during an incident, not during backup. A snapshot from an unhealthy member, a corrupted transfer to object storage, or a restore that writes no data renders disaster recovery useless. This guide gives the checks, commands, and decision logic to verify snapshot integrity, fix backup failures, and perform clean restores.&lt;/p>
&lt;h2 id="what-this-means">What this means&lt;/h2>
&lt;p>An etcd snapshot captures the entire key-value store at a point in time. Because committed Raft log entries exist on a majority of members, a snapshot from any healthy member contains the full cluster state. The snapshot file includes a SHA-256 hash computed at save time. If that hash does not match after transfer, or if the snapshot is taken while etcd is under NOSPACE alarm or leader instability, the file may be inconsistent.&lt;/p></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;h1 id="kubernetes-eviction-cascade-when-one-node-failure-takes-down-the-cluster">Kubernetes eviction cascade: when one node failure takes down the cluster&lt;/h1>
&lt;p>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>
&lt;p>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></description></item><item><title>Kubernetes headless service resolution: SRV records and pod discovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-headless-service-resolution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-headless-service-resolution/</guid><description>&lt;h1 id="kubernetes-headless-service-resolution-srv-records-and-pod-discovery">Kubernetes headless service resolution: SRV records and pod discovery&lt;/h1>
&lt;p>You deployed a StatefulSet with a headless Service so peers can discover each other, but nslookup returns NXDOMAIN or only a single IP when several pods are running. Your application might rely on SRV records for port discovery and the lookup returns nothing. Or a pod rescheduled onto a new node and clients kept trying the old IP for minutes because the TTL behavior surprised you.&lt;/p></description></item><item><title>Kubernetes imagePullSecrets: configuration, propagation, and rotation</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-image-pull-secrets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-image-pull-secrets/</guid><description>&lt;h1 id="kubernetes-imagepullsecrets-configuration-propagation-and-rotation">Kubernetes imagePullSecrets: configuration, propagation, and rotation&lt;/h1>
&lt;p>Pods stuck in &lt;code>ImagePullBackOff&lt;/code> are rarely caused by a missing or incorrect image tag. More often, the kubelet lacks valid registry credentials. Kubernetes uses &lt;code>imagePullSecrets&lt;/code>, namespaced Secrets of type &lt;code>kubernetes.io/dockerconfigjson&lt;/code>, to inject registry auth into a pod. These can be attached directly to the pod spec or propagated through a ServiceAccount.&lt;/p>
&lt;p>This guide covers propagation from registry to kubelet, verification at each link, and rotation without forcing a rolling restart of every workload.&lt;/p></description></item><item><title>Kubernetes init container fails: blocking main container start</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-init-container-fails/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-init-container-fails/</guid><description>&lt;h1 id="kubernetes-init-container-fails-blocking-main-container-start">Kubernetes init container fails: blocking main container start&lt;/h1>
&lt;p>An init container failure blocks the entire pod. Until every init container exits zero, no main container starts. In automated clusters, one failing init container can stall a deployment while pods sit in &lt;code>PodInitializing&lt;/code>. This guide covers init container retry mechanics, how to read pod status to find the failing step, and how to distinguish application bugs, resource limits, and kubelet issues that leave pods permanently stuck.&lt;/p></description></item><item><title>Kubernetes Job and CronJob troubleshooting: history, backoff, and missed runs</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-job-cronjob-troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-job-cronjob-troubleshooting/</guid><description>&lt;h1 id="kubernetes-job-and-cronjob-troubleshooting-history-backoff-and-missed-runs">Kubernetes Job and CronJob troubleshooting: history, backoff, and missed runs&lt;/h1>
&lt;p>You deployed a CronJob to run every minute, but the last successful run was three hours ago. Or a critical data-processing Job failed with BackoffLimitExceeded after six silent retries, leaving a trail of failed Pods and no clear signal about what broke. Batch workloads fail differently from long-running services: they are time-bound, retry-sensitive, and leave debris in etcd if you do not clean them up. Read the failure signals, distinguish retry storms from control plane delays, and fix the root cause without guessing.&lt;/p></description></item><item><title>Kubernetes kube-proxy and CNI rule conflicts: detection and fix</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kube-proxy-cni-conflict/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kube-proxy-cni-conflict/</guid><description>&lt;h1 id="kubernetes-kube-proxy-and-cni-rule-conflicts-detection-and-fix">Kubernetes kube-proxy and CNI rule conflicts: detection and fix&lt;/h1>
&lt;p>Pods stuck in ContainerCreating while the node reports Ready. Services time out despite existing endpoints. Intermittent connection resets during rolling updates. These symptoms usually indicate a conflict between kube-proxy and the container network interface (CNI) plugin over netfilter rules. Both components program the same kernel tables, compete for the same locks, and can corrupt each other&amp;rsquo;s chains. The data plane degrades while the control plane stays healthy.&lt;/p></description></item><item><title>Kubernetes kube-proxy iptables sync stall: causes and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-iptables-sync-stall/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-iptables-sync-stall/</guid><description>&lt;h1 id="kubernetes-kube-proxy-iptables-sync-stall-causes-and-recovery">Kubernetes kube-proxy iptables sync stall: causes and recovery&lt;/h1>
&lt;p>Pods fail to start. Services intermittently route traffic to dead endpoints. The kube-proxy health endpoint still returns HTTP 200, so the DaemonSet looks healthy, yet rules drift further behind with every sync cycle.&lt;/p>
&lt;p>An iptables sync stall is not a crash. It is a slowdown or blockage in the control loop that translates Service and EndpointSlice state into kernel NAT rules. When kube-proxy cannot acquire the global xtables lock, when &lt;code>iptables-restore&lt;/code> hangs, or when the rule set grows too large to reconcile within the sync period, the node forwards packets using stale rules. New endpoints are invisible. Terminated pods still receive connections. CNI plugins that also need the xtables lock time out, and pod sandbox creation fails.&lt;/p></description></item><item><title>Kubernetes kube-proxy IPVS: stale rules and session affinity issues</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-ipvs-stale-rules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-ipvs-stale-rules/</guid><description>&lt;h1 id="kubernetes-kube-proxy-ipvs-stale-rules-and-session-affinity-issues">Kubernetes kube-proxy IPVS: stale rules and session affinity issues&lt;/h1>
&lt;p>DNS queries start timing out from one node after a CoreDNS rolling update. A UDP Service returns timeouts for some clients but not others. New Services are unreachable from a specific node while older Services continue to work.&lt;/p>
&lt;p>In IPVS mode, kube-proxy programs the kernel&amp;rsquo;s IPVS table with virtual servers and real servers. The IPVS connection table lives outside kube-proxy&amp;rsquo;s direct control and outside nf_conntrack. That separation creates two IPVS-specific failure modes: stale rules that diverge from EndpointSlice state, and UDP session affinity that sticks to dead backends long after a pod terminates.&lt;/p></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;h1 id="kubernetes-kubelet-certificate-expired-detection-rotation-and-recovery">Kubernetes kubelet certificate expired: detection, rotation, and recovery&lt;/h1>
&lt;p>A healthy node suddenly shows NotReady. Pods keep running, but the kubelet stops reporting status. &lt;code>kubectl logs&lt;/code> and &lt;code>kubectl exec&lt;/code> fail with TLS errors. The cluster event stream is quiet. This is usually an expired kubelet client certificate that failed to rotate.&lt;/p>
&lt;p>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>kubectl exec&lt;/code>, and &lt;code>kubectl logs&lt;/code> break even if the node is otherwise Ready.&lt;/p></description></item><item><title>Kubernetes kubelet goroutine leaks: detection and bisection</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-goroutine-leaks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-goroutine-leaks/</guid><description>&lt;h1 id="kubernetes-kubelet-goroutine-leaks-detection-and-bisection">Kubernetes kubelet goroutine leaks: detection and bisection&lt;/h1>
&lt;p>A kubelet goroutine leak is a slow-burn failure. The process stays up, the node often remains Ready for hours, and then PLEG timeouts start, sync loops lag, and the kubelet is eventually OOM-killed or unresponsive. By the time the node flips to NotReady, the original leak signature is usually obscured by secondary symptoms.&lt;/p>
&lt;h2 id="what-this-means">What this means&lt;/h2>
&lt;p>The kubelet spawns goroutines for pod workers, probes, API server watches, volume operations, PLEG relists, and CRI calls. In a healthy node, goroutine count correlates with pod density and returns to a stable floor when churn stops. A leak means goroutines are created but never exit, causing three cascading effects:&lt;/p></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;h1 id="kubernetes-kubelet-memory-leak-detection-and-oom-cycle">Kubernetes kubelet memory leak: detection and OOM cycle&lt;/h1>
&lt;p>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></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;h1 id="kubernetes-kubelet-not-responding-pleg-runtime--certificate-issues">Kubernetes Kubelet Not Responding: PLEG, Runtime &amp;amp; Certificate Issues&lt;/h1>
&lt;p>&lt;a href="https://www.netdata.cloud/guides/kubernetes/">A Kubernetes node&lt;/a> 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>
&lt;p>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></description></item><item><title>Kubernetes kubelet pod CIDR changes: detection and rolling fix</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-pod-cidr-changes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-pod-cidr-changes/</guid><description>&lt;h1 id="kubernetes-kubelet-pod-cidr-changes-detection-and-rolling-fix">Kubernetes kubelet pod CIDR changes: detection and rolling fix&lt;/h1>
&lt;p>Pod sandbox creation errors, nodes registering without an IP range, and cross-node traffic failures are symptoms of pod CIDR drift. The kubelet does not assign its own pod CIDR; the kube-controller-manager node IPAM controller writes the range into &lt;code>node.spec.podCIDR&lt;/code> and &lt;code>node.spec.podCIDRs&lt;/code>. When that assignment fails or diverges, the result is usually a slow fracture: some nodes host pods while others cannot, or pods on different nodes lose connectivity.&lt;/p></description></item><item><title>Kubernetes kubelet pprof troubleshooting: capturing heap and goroutine profiles</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-pprof-troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-pprof-troubleshooting/</guid><description>&lt;h1 id="kubernetes-kubelet-pprof-troubleshooting-capturing-heap-and-goroutine-profiles">Kubernetes kubelet pprof troubleshooting: capturing heap and goroutine profiles&lt;/h1>
&lt;p>When a node starts flapping between Ready and NotReady, or kubelet memory climbs steadily while pod count stays flat, node-level metrics like &lt;code>kubelet_goroutines&lt;/code> and &lt;code>process_resident_memory_bytes&lt;/code> will tell you that the kubelet process is struggling. They will not tell you whether the leak is in the PLEG relist path, the volume manager, or a probe goroutine pool. For that, you need a profile.&lt;/p></description></item><item><title>Kubernetes kubelet volume deadlock: detection and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-volume-deadlock/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-kubelet-volume-deadlock/</guid><description>&lt;h1 id="kubernetes-kubelet-volume-deadlock-detection-and-recovery">Kubernetes kubelet volume deadlock: detection and recovery&lt;/h1>
&lt;p>When pods hang in &lt;code>ContainerCreating&lt;/code> or &lt;code>Terminating&lt;/code> while the node stays &lt;code>Ready=True&lt;/code>, the kubelet volume manager is often the culprit. A blocked mount, unmount, attach, or detach operation consumes a goroutine in the volume manager&amp;rsquo;s finite pool. Once enough operations hang, the queue saturates. Subsequent pods needing volumes stall indefinitely, while pods without volumes start normally. The scheduler, seeing a healthy node, may keep placing volume-bound pods onto the saturated node, deepening the backlog. This guide covers how to confirm a volume deadlock, distinguish it from slow storage, and recover safely.&lt;/p></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;h1 id="kubernetes-monitoring-checklist-the-signals-every-production-cluster-needs">Kubernetes Monitoring Checklist: The Signals Every Production Cluster Needs&lt;/h1>
&lt;p>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>
&lt;p>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></description></item><item><title>Kubernetes monitoring maturity model: from survival to expert</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-monitoring-maturity-model/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-monitoring-maturity-model/</guid><description>&lt;h1 id="kubernetes-monitoring-maturity-model-from-survival-to-expert">Kubernetes monitoring maturity model: from survival to expert&lt;/h1>
&lt;p>Kubernetes failures rarely announce themselves. A slow etcd disk cascades into API latency, which backs up controller workqueues, which delays pod scheduling, which triggers autoscaling, which amplifies the load that caused the original latency spike. Without the right signals, you will debug the autoscaling event while the real problem is a WAL fsync that crossed 100ms ten minutes earlier.&lt;/p>
&lt;p>A monitoring maturity model is not a tooling checklist. It is a coverage framework that tells you which signals you are missing and what those gaps cost you during an incident. The four levels below map the progression from &amp;ldquo;Is the cluster on fire?&amp;rdquo; to &amp;ldquo;Why did that single pod take three milliseconds longer to start on node twelve?&amp;rdquo; Each level assumes the previous and adds signals that change your mean time to detection and your mean time to root cause.&lt;/p></description></item><item><title>Kubernetes NetworkPolicy debugging: when traffic is denied silently</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-network-policy-debugging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-network-policy-debugging/</guid><description>&lt;h1 id="kubernetes-networkpolicy-debugging-when-traffic-is-denied-silently">Kubernetes NetworkPolicy debugging: when traffic is denied silently&lt;/h1>
&lt;p>A pod that could reach its dependency yesterday now times out today. There is no TCP RST, no ICMP unreachable, and often no application log. The packet is dropped in the CNI data plane. If a policy change, namespace reorganization, or cluster upgrade preceded the outage, you are likely dealing with silent NetworkPolicy denial. This guide shows how to confirm it, find the rule or semantic gap responsible, and restore connectivity without opening the cluster.&lt;/p></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;h1 id="kubernetes-node-cpu-saturation-load-throttling-and-runqueue-depth">Kubernetes node CPU saturation: load, throttling, and runqueue depth&lt;/h1>
&lt;p>Application latency climbs and pods slow down. &lt;code>kubectl top nodes&lt;/code> 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></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;h1 id="kubernetes-node-diskpressure-detection-eviction--recovery">Kubernetes Node DiskPressure: Detection, Eviction &amp;amp; Recovery&lt;/h1>
&lt;p>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>node.kubernetes.io/disk-pressure&lt;/code> 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>
&lt;p>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></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;h1 id="kubernetes-node-memorypressure-detection-eviction-order-and-prevention">Kubernetes node MemoryPressure: detection, eviction order, and prevention&lt;/h1>
&lt;p>Before adding RAM, determine whether kubelet is evicting because workloads are genuinely starving or because memory requests are misaligned with reality.&lt;/p>
&lt;h2 id="what-this-means">What this means&lt;/h2>
&lt;p>Kubelet evaluates &lt;code>memory.available&lt;/code> against an eviction threshold. On Linux the default hard threshold is &lt;code>memory.available &amp;lt; 100Mi&lt;/code>. Kubelet derives this from cgroup stats, not &lt;code>free -m&lt;/code>. 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>MemoryPressure=True&lt;/code> and adds the taint &lt;code>node.kubernetes.io/memory-pressure:NoSchedule&lt;/code>. New pods are blocked from scheduling until the condition clears.&lt;/p></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;h1 id="kubernetes-node-notready-kubelet-runtime--network-diagnosis">Kubernetes Node NotReady: Kubelet, Runtime &amp;amp; Network Diagnosis&lt;/h1>
&lt;p>When &lt;a href="https://www.netdata.cloud/guides/kubernetes/">a Kubernetes node&lt;/a> 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>
&lt;h2 id="what-this-means">What This Means&lt;/h2>
&lt;p>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>--node-monitor-grace-period&lt;/code> (default 40 seconds). The node receives the &lt;code>node.kubernetes.io/not-ready:NoSchedule&lt;/code> 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></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;h1 id="kubernetes-node-pidpressure-detection-and-remediation">Kubernetes node PIDPressure: detection and remediation&lt;/h1>
&lt;p>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>EAGAIN&lt;/code> or &lt;code>ENOMEM&lt;/code> from fork failures, not a kubelet eviction.&lt;/p>
&lt;p>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></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;h1 id="kubernetes-pleg-is-not-healthy-runtime-stalls-and-node-degradation">Kubernetes PLEG is not healthy: runtime stalls and node degradation&lt;/h1>
&lt;p>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>
&lt;p>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></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;h1 id="kubernetes-pod-crashloopbackoff-causes-diagnosis--fixes">Kubernetes Pod CrashLoopBackOff: Causes, Diagnosis &amp;amp; Fixes&lt;/h1>
&lt;p>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>
&lt;p>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></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;h1 id="kubernetes-pod-creation-fails-admission-quota-and-cri-errors">Kubernetes pod creation fails: admission, quota, and CRI errors&lt;/h1>
&lt;p>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>kubectl get pods&lt;/code> returns nothing. Or a Pod hangs in &lt;code>ImagePullBackOff&lt;/code> before &lt;code>ContainerCreating&lt;/code>. These cases surface as missing Pods, &lt;code>FailedCreate&lt;/code> 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></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;h1 id="kubernetes-pod-evicted-detection-root-cause-and-prevention">Kubernetes pod Evicted: detection, root cause, and prevention&lt;/h1>
&lt;p>Pods with status &lt;code>Evicted&lt;/code> 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>Failed&lt;/code> with reason &lt;code>Evicted&lt;/code>, and the node reports conditions such as &lt;code>MemoryPressure&lt;/code> or &lt;code>DiskPressure&lt;/code>.&lt;/p>
&lt;p>This guide covers node-pressure eviction triggered by the kubelet, not voluntary disruption from &lt;code>kubectl drain&lt;/code> or PodDisruptionBudget enforcement.&lt;/p></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;h1 id="kubernetes-pod-exits-immediately-how-to-diagnose-it">Kubernetes pod exits immediately: how to diagnose it&lt;/h1>
&lt;p>When a pod shows &lt;code>Completed&lt;/code> or &lt;code>Error&lt;/code> 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>CrashLoopBackOff&lt;/code>, where the kubelet has already applied exponential backoff after multiple restarts.&lt;/p>
&lt;p>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></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;h1 id="kubernetes-pod-imagepullbackoff-registry-auth-and-network-diagnosis">Kubernetes pod ImagePullBackOff: registry, auth, and network diagnosis&lt;/h1>
&lt;p>&lt;code>ImagePullBackOff&lt;/code> means the kubelet cannot pull a required image. After each &lt;code>ErrImagePull&lt;/code> failure, the kubelet retries with exponential backoff capped at five minutes. When &lt;code>serializeImagePulls&lt;/code> 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></description></item><item><title>Kubernetes pod liveness probe killing healthy containers</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-liveness-probe-killing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-liveness-probe-killing/</guid><description>&lt;h1 id="kubernetes-pod-liveness-probe-killing-healthy-containers">Kubernetes pod liveness probe killing healthy containers&lt;/h1>
&lt;p>A container that is processing requests, not OOMKilled, and not crashed can still be restarted repeatedly by the kubelet because a liveness probe failed. The application is alive, but the probe says it is not. This usually shows up as a pod stuck in &lt;code>CrashLoopBackOff&lt;/code> with &lt;code>Liveness probe failed&lt;/code> events, even though application logs show no fatal error. The restarts waste resources, break active connections, and can trigger cascading load on the cluster as other pods absorb the shifted traffic.&lt;/p></description></item><item><title>Kubernetes pod network isolation: when one node loses pod connectivity</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-network-isolation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-network-isolation/</guid><description>&lt;h1 id="kubernetes-pod-network-isolation-when-one-node-loses-pod-connectivity">Kubernetes pod network isolation: when one node loses pod connectivity&lt;/h1>
&lt;p>One node in your cluster drops off the pod network. Pods still show Running, but they cannot reach Services, other pods, or external endpoints. The rest of the cluster is unaffected. This is single-node pod network isolation, and it is almost always a node-local CNI or data path failure.&lt;/p>
&lt;p>Symptoms are subtle compared to a full cluster outage. Applications log connection timeouts. Health checks fail. New pods stick in ContainerCreating. Because the node often stays Ready, operators may blame the application rather than the network layer.&lt;/p></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;h1 id="kubernetes-pod-oomkilled-cgroup-limits-evictions-and-fixes">Kubernetes pod OOMKilled: cgroup limits, evictions, and fixes&lt;/h1>
&lt;p>A pod status of &lt;code>OOMKilled&lt;/code> means the container restarted after the kernel sent SIGKILL because it could not satisfy a memory allocation. There is no graceful shutdown.&lt;/p>
&lt;p>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></description></item><item><title>Kubernetes pod readiness probe failures: traffic exclusion and debug</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-readiness-probe-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-readiness-probe-failures/</guid><description>&lt;h1 id="kubernetes-pod-readiness-probe-failures-traffic-exclusion-and-debug">Kubernetes pod readiness probe failures: traffic exclusion and debug&lt;/h1>
&lt;p>You check a Deployment and see pods in &lt;code>Running&lt;/code> phase but not &lt;code>Ready&lt;/code>. Traffic to the Service drops. The containers have not restarted. This is a readiness probe failure. Unlike liveness, readiness does not restart the container. It removes the pod from Service endpoints. The container may be starting slowly, temporarily overloaded, or waiting on a dependency that should not be in the probe path. This guide explains how Kubernetes excludes traffic, how to distinguish readiness from liveness failures, and how to debug the root cause.&lt;/p></description></item><item><title>Kubernetes Pod Security Standards violations: detection and remediation</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-security-violations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-security-violations/</guid><description>&lt;h1 id="kubernetes-pod-security-standards-violations-detection-and-remediation">Kubernetes Pod Security Standards violations: detection and remediation&lt;/h1>
&lt;p>You apply a Deployment and the ReplicaSet creates zero pods. You roll out a DaemonSet update and new pods vanish without events. You add a namespace label to improve security posture, and CI pipelines fail with opaque admission errors. Pod Security Admission (PSA) blocks non-compliant workloads silently when &lt;code>enforce&lt;/code> mode is active. To fix these violations, correlate namespace labels with enforcement outcomes, parse audit log annotations into exact spec changes, distinguish admission-time rejections from runtime failures, and prevent enforcement from silently blocking future rollouts.&lt;/p></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;h1 id="kubernetes-pod-stuck-containercreating-volume-network-and-image-issues">Kubernetes pod stuck ContainerCreating: volume, network, and image issues&lt;/h1>
&lt;p>A pod stuck in &lt;code>ContainerCreating&lt;/code> 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></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;h1 id="kubernetes-pod-stuck-on-volume-mount-csi-permissions-and-timeouts">Kubernetes pod stuck on volume mount: CSI, permissions, and timeouts&lt;/h1>
&lt;p>You scale a StatefulSet and the new pods sit in &lt;code>ContainerCreating&lt;/code> for ten minutes. The node is &lt;code>Ready&lt;/code>. The CSI driver pods are running. &lt;code>kubectl describe&lt;/code> shows no &lt;code>FailedMount&lt;/code> 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></description></item><item><title>Kubernetes pod stuck Pending: scheduling failures explained</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-pending/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pod-pending/</guid><description>&lt;h1 id="kubernetes-pod-stuck-pending-scheduling-failures-explained">Kubernetes pod stuck Pending: scheduling failures explained&lt;/h1>
&lt;p>A Deployment scales up and the new replicas stay Pending. No containers start, no logs appear, and &lt;code>kubectl logs&lt;/code> returns nothing because no node is assigned yet. When a pod is stuck in Pending, the scheduler has either not yet evaluated it or has rejected every candidate node. Containers cannot start until the pod is assigned, so this blocks rollouts, autoscaling, and recovery.&lt;/p></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;h1 id="kubernetes-pod-stuck-terminating-finalizers-grace-periods--force-delete">Kubernetes Pod Stuck Terminating: Finalizers, Grace Periods &amp;amp; Force Delete&lt;/h1>
&lt;p>A pod stuck in &lt;code>Terminating&lt;/code> stays visible in the &lt;a href="https://www.netdata.cloud/guides/kubernetes/kubernetes-api-server-slow/">API server&lt;/a> after &lt;code>kubectl delete&lt;/code>, 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></description></item><item><title>Kubernetes priority class evictions: how preemption actually works</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-priority-class-eviction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-priority-class-eviction/</guid><description>&lt;h1 id="kubernetes-priority-class-evictions-how-preemption-actually-works">Kubernetes priority class evictions: how preemption actually works&lt;/h1>
&lt;p>Scheduler preemption and kubelet node-pressure eviction both use Pod Priority, but they follow different rules, interact differently with PodDisruptionBudgets, and produce different failure signatures. Misunderstanding the two mechanisms leads to critical workloads being terminated unexpectedly, high-priority pods staying pending while lower-priority pods run, or system pods being preempted after a PriorityClass change.&lt;/p>
&lt;p>The scheduler preempts lower-priority pods to make room for a higher-priority pending pod. The kubelet evicts pods when a node is under resource pressure. A PodDisruptionBudget protects against voluntary disruptions, but the scheduler treats PDB violations during preemption as best-effort, not guaranteed.&lt;/p></description></item><item><title>Kubernetes PV reclaim policies: Retain, Delete, Recycle in practice</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pv-reclaim-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pv-reclaim-policy/</guid><description>&lt;h1 id="kubernetes-pv-reclaim-policies-retain-delete-recycle-in-practice">Kubernetes PV reclaim policies: Retain, Delete, Recycle in practice&lt;/h1>
&lt;p>Deleting a PVC does not always delete the underlying storage. If the PV enters Released state and the cloud bill keeps growing, or the application fails after redeployment because the PV is still bound to a deleted claim, the reclaim policy is misaligned with operator intent. This guide explains what happens when a bound PVC is deleted under each reclaim policy, how to recover a Retained volume, why Delete can orphan cloud resources, and why Recycle should not be used in modern clusters. The focus is on practical checks, CSI-specific gotchas, and preventing data loss.&lt;/p></description></item><item><title>Kubernetes PV volumeBindingMode WaitForFirstConsumer: when and why</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pv-binding-mode-late/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pv-binding-mode-late/</guid><description>&lt;h1 id="kubernetes-pv-volumebindingmode-waitforfirstconsumer-when-and-why">Kubernetes PV volumeBindingMode WaitForFirstConsumer: when and why&lt;/h1>
&lt;p>A PersistentVolumeClaim that stays Pending after creation often triggers an incident response. When the StorageClass uses &lt;code>volumeBindingMode: WaitForFirstConsumer&lt;/code>, that Pending state is usually intentional. The cluster defers provisioning and binding until a Pod that references the PVC is created and the scheduler tentatively selects a node. This article explains what Immediate and WaitForFirstConsumer mean, why Kubernetes defers binding, where the mechanism appears in production, and the operational tradeoffs you accept when you choose one mode over the other.&lt;/p></description></item><item><title>Kubernetes PVC stuck Pending: storage class, provisioner, and quota</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-pvc-stuck-pending/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-pvc-stuck-pending/</guid><description>&lt;h1 id="kubernetes-pvc-stuck-pending-storage-class-provisioner-and-quota">Kubernetes PVC stuck Pending: storage class, provisioner, and quota&lt;/h1>
&lt;p>A PersistentVolumeClaim stuck in &lt;code>Pending&lt;/code> is a storage-layer failure. Unlike a pod that is &lt;code>Pending&lt;/code> due to CPU or memory, a PVC in &lt;code>Pending&lt;/code> means the cluster cannot provision the volume. The cause usually sits in one of three layers: the StorageClass and its provisioner, namespace-level ResourceQuota limits, or topology and cloud constraints that prevent volume creation and attachment.&lt;/p>
&lt;p>When a PVC stays unbound, dependent pods cannot start. StatefulSets stall, rolling updates hang, and storage-dependent applications remain offline.&lt;/p></description></item><item><title>Kubernetes RBAC permission denied: detection and minimum-permission fix</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-rbac-permission-denied/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-rbac-permission-denied/</guid><description>&lt;h1 id="kubernetes-rbac-permission-denied-detection-and-minimum-permission-fix">Kubernetes RBAC permission denied: detection and minimum-permission fix&lt;/h1>
&lt;p>A 403 Forbidden from the Kubernetes API server means the caller was authenticated but RBAC refused the action. In production, this appears as a Deployment stuck creating pods, a CI pipeline failing to patch a ConfigMap, a controller logging repeated forbidden errors, or an operator unable to finalize a custom resource. One missing verb on one resource in one namespace blocks the entire workflow.&lt;/p></description></item><item><title>Kubernetes ResourceQuota exceeded: detection and remediation</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-resource-quota-exceeded/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-resource-quota-exceeded/</guid><description>&lt;h1 id="kubernetes-resourcequota-exceeded-detection-and-remediation">Kubernetes ResourceQuota exceeded: detection and remediation&lt;/h1>
&lt;p>A Deployment looks healthy in &lt;code>kubectl get deployment&lt;/code> but the new ReplicaSet has zero pods. A Job is accepted but never creates a pod. A CI/CD pipeline fails with opaque 403 errors from the API server. These symptoms point to ResourceQuota exhaustion. Confirm the quota is the blocker, identify the exhausted resource, and fix it.&lt;/p>
&lt;h2 id="what-this-means">What this means&lt;/h2>
&lt;p>ResourceQuota is a namespace-scoped admission controller that enforces hard aggregate limits on resource consumption. When a tracked resource hits its hard limit, the API server rejects subsequent create requests with HTTP 403 Forbidden and a message containing &lt;code>exceeded quota: &amp;lt;quota-name&amp;gt;&lt;/code>. Existing pods keep running; quota is enforced at admission time, not by terminating workloads.&lt;/p></description></item><item><title>Kubernetes scheduler not scheduling pods: queue depth and failure reasons</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-scheduler-not-scheduling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-scheduler-not-scheduling/</guid><description>&lt;h1 id="kubernetes-scheduler-not-scheduling-pods-queue-depth-and-failure-reasons">Kubernetes scheduler not scheduling pods: queue depth and failure reasons&lt;/h1>
&lt;p>Pods stay Pending for many reasons, but the scheduler process being down is rarely one. More often, pods accumulate in internal queues because the cluster is out of capacity, a control plane dependency stalls the binding cycle, or a filter plugin rejects every candidate node. Distinguishing &amp;ldquo;unschedulable&amp;rdquo; (no node fits) from &amp;ldquo;not scheduling&amp;rdquo; (the scheduler cannot keep up or the binding cycle is failing) prevents wasted node scaling when the real problem is an etcd latency spike or a volume affinity conflict.&lt;/p></description></item><item><title>Kubernetes secrets mount failures: detection and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-secrets-mount-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-secrets-mount-failures/</guid><description>&lt;h1 id="kubernetes-secrets-mount-failures-detection-and-recovery">Kubernetes secrets mount failures: detection and recovery&lt;/h1>
&lt;p>Pods that reference a Secret volume can hang in &lt;code>ContainerCreating&lt;/code> for minutes, crash on startup with missing files, or silently run with stale credentials. The kubelet mounts Secret data as a tmpfs-backed volume and validates the Secret object and its requested keys before any container starts. If the Secret does not exist, if a specific key is absent, or if the kubelet cannot reach the API server, the mount fails. Non-optional mounts block every container from starting. Optional mounts allow startup but leave the mount point empty, which can cause failures later.&lt;/p></description></item><item><title>Kubernetes Service Not Reachable: Kube-Proxy, Endpoints &amp; DNS</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-service-not-reachable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-service-not-reachable/</guid><description>&lt;p>A Service fails when the chain between the client and backend breaks. That chain depends on EndpointSlices to list healthy pods, kube-proxy to program kernel rules, and cluster DNS to resolve names to ClusterIPs. This guide covers the gap between healthy backend pods and an unreachable Service, focusing on kube-proxy data-plane programming, endpoint state, and DNS dependencies. It does not cover application-level bugs inside the pod.&lt;/p>
&lt;h2 id="what-this-means">What This Means&lt;/h2>
&lt;p>Reachability is a control-loop problem. kube-proxy watches Services and EndpointSlices, then programs iptables, IPVS, or nftables rules to DNAT traffic to healthy endpoints. These rules persist in the kernel if kube-proxy crashes, but updates stop until it resumes. DNS resolution targets the CoreDNS ClusterIP, so a kube-proxy failure often appears as a DNS outage before a direct Service timeout.&lt;/p></description></item><item><title>Kubernetes stale conntrack during rolling updates: intermittent connection resets</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-stale-conntrack-rolling-update/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-stale-conntrack-rolling-update/</guid><description>&lt;h1 id="kubernetes-stale-conntrack-during-rolling-updates-intermittent-connection-resets">Kubernetes stale conntrack during rolling updates: intermittent connection resets&lt;/h1>
&lt;p>You deploy a new version of a service. The rollout reports healthy. Error budgets look fine. Then you notice sporadic connection resets in application logs, a handful of timeout errors, or brief latency spikes that correlate exactly with pod terminations. The failures are intermittent, last only seconds, and never trigger a full outage. This is the stale conntrack race during rolling updates.&lt;/p></description></item><item><title>Kubernetes StatefulSet pod not ready: ordering, PVCs, and recovery</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-statefulset-pod-not-ready/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-statefulset-pod-not-ready/</guid><description>&lt;h1 id="kubernetes-statefulset-pod-not-ready-ordering-pvcs-and-recovery">Kubernetes StatefulSet pod not ready: ordering, PVCs, and recovery&lt;/h1>
&lt;p>A StatefulSet pod stuck at 0/1 Ready, Pending, or Unknown blocks the entire chain when the default OrderedReady policy is in effect. The controller creates pods sequentially from ordinal 0 to N-1, so one failure halts all higher ordinals. A volumeClaimTemplate adds dependencies on storage binding, node affinity, and CSI attachment that can outlive the pod. Force-deleting a pod risks violating at-most-one semantics and causing split-brain in quorum-sensitive workloads.&lt;/p></description></item><item><title>Kubernetes volume snapshot failures: VolumeSnapshot CRDs and CSI snapshotter</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-volume-snapshot-failures/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-volume-snapshot-failures/</guid><description>&lt;h1 id="kubernetes-volume-snapshot-failures-volumesnapshot-crds-and-csi-snapshotter">Kubernetes volume snapshot failures: VolumeSnapshot CRDs and CSI snapshotter&lt;/h1>
&lt;p>A VolumeSnapshot that never becomes &lt;code>readyToUse&lt;/code>, a restore yielding an empty PVC, or a CSI snapshotter sidecar logging GRPC errors with no cluster progress all indicate the same problem: the snapshot pipeline broke between the API server and the storage backend.&lt;/p>
&lt;p>This guide covers failure modes between applying a VolumeSnapshot manifest and the storage backend completing the operation. It covers verifying CRDs, the snapshot-controller, the CSI snapshotter sidecar, driver names, capabilities, and secrets, and reading the error signatures each misalignment produces.&lt;/p></description></item><item><title>Monitoring Kubernetes across vanilla, EKS, GKE, AKS, k3s, and rke2</title><link>https://www.netdata.cloud/guides/kubernetes/kubernetes-deployment-variants-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.netdata.cloud/guides/kubernetes/kubernetes-deployment-variants-monitoring/</guid><description>&lt;h1 id="monitoring-kubernetes-across-vanilla-eks-gke-aks-k3s-and-rke2">Monitoring Kubernetes across vanilla, EKS, GKE, AKS, k3s, and rke2&lt;/h1>
&lt;p>Every Kubernetes cluster exposes the same core control plane components, but what you can actually scrape, query, and alert on depends entirely on how the distribution packages those components. An operator migrating between vanilla kubeadm, Amazon EKS, Google GKE, Azure AKS, k3s, and rke2 needs to know which metrics endpoints exist, which are reachable without extra tooling, and which are gated behind vendor lock-in or architectural quirks. This article maps the native monitoring surface of each variant so you can adapt your collection strategy without discovering gaps during an incident.&lt;/p></description></item></channel></rss>