<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Operator Pod</title>
	<atom:link href="https://operatorpod.net/feed/" rel="self" type="application/rss+xml" />
	<link>https://operatorpod.net</link>
	<description></description>
	<lastBuildDate>Wed, 09 Sep 2026 09:22:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>
<site xmlns="com-wordpress:feed-additions:1">257694118</site>	<item>
		<title>Writing Production-Ready Helm Values for Kubernetes Controllers</title>
		<link>https://operatorpod.net/writing-production-ready-helm-values/</link>
					<comments>https://operatorpod.net/writing-production-ready-helm-values/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 09:22:05 +0000</pubDate>
				<category><![CDATA[Helm]]></category>
		<guid isPermaLink="false">https://operatorpod.net/writing-production-ready-helm-values/</guid>

					<description><![CDATA[Learn how to structure enterprise values.yaml manifests for Kubernetes controllers, implement soft anti-affinity, and enforce non-root security contexts.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Packaging Kubernetes operator controllers with Helm requires careful consideration of security, high availability, and upgrade safety. A robust <code>values.yaml</code> design pattern ensures that production clusters remain resilient across multi-zone outages.</p>



<h2 class="wp-block-heading">1. Enforcing Pod Anti-Affinity</h2>



<p class="wp-block-paragraph">If an operator controller runs with multiple replicas for active-passive leader election, scheduling both replicas on the same physical Kubernetes worker node creates a single point of failure. Use <code>preferredDuringSchedulingIgnoredDuringExecution</code> to spread replicas across failure domains.</p>



<h2 class="wp-block-heading">2. Dropping Linux Capabilities</h2>



<p class="wp-block-paragraph">Most operator pods only interact with the Kubernetes apiserver over HTTPS. They do not require elevated Linux capabilities like NET_ADMIN or SYS_PTRACE. Dropping all capabilities and mounting the root filesystem as read-only satisfies the highest compliance tier of the Kubernetes Pod Security Standards.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://operatorpod.net/writing-production-ready-helm-values/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">16</post-id>	</item>
		<item>
		<title>Kubernetes CPU and Memory Limits: Preventing OOMKilled Exit Code 137</title>
		<link>https://operatorpod.net/kubernetes-memory-limits-oomkilled-137/</link>
					<comments>https://operatorpod.net/kubernetes-memory-limits-oomkilled-137/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 09:22:05 +0000</pubDate>
				<category><![CDATA[Kubernetes Resources]]></category>
		<guid isPermaLink="false">https://operatorpod.net/kubernetes-memory-limits-oomkilled-137/</guid>

					<description><![CDATA[Understand how the Linux kernel cgroup OOM killer works in Kubernetes, how to size operator pod memory limits, and how to avoid noisy-neighbor evictions.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In containerized Kubernetes environments, understanding the distinction between CPU throttling and Memory OOM kills is critical. While exceeding a CPU limit merely compresses execution time via the Linux Completely Fair Scheduler (CFS), exceeding a memory limit results in immediate, unrecoverable container termination.</p>



<h2 class="wp-block-heading">How the Linux Kernel Triggers SIGKILL (Exit 137)</h2>



<p class="wp-block-paragraph">Every container runtime allocates a cgroup for the container process. When resident set memory (RSS) surpasses <code>resources.limits.memory</code>, the cgroup memory controller dispatches SIGKILL (Signal 9 + 128 = Exit Code 137). Kubernetes records this condition as <strong>OOMKilled</strong>.</p>



<h2 class="wp-block-heading">Configuring Memory Headroom for Operator Controllers</h2>



<p class="wp-block-paragraph">Operators frequently maintain in-memory caches (such as controller-runtime client-go informers) of all managed custom resources in the cluster. As the number of CRs grows from 10 to 1,000, informer cache memory grows linearly. Always calculate a 30% to 50% buffer over baseline idle consumption.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://operatorpod.net/kubernetes-memory-limits-oomkilled-137/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">15</post-id>	</item>
		<item>
		<title>How to Debug Kubernetes Operator Pods in CrashLoopBackOff</title>
		<link>https://operatorpod.net/debug-kubernetes-operator-crashloopbackoff/</link>
					<comments>https://operatorpod.net/debug-kubernetes-operator-crashloopbackoff/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 09:22:04 +0000</pubDate>
				<category><![CDATA[Pod Troubleshooting]]></category>
		<guid isPermaLink="false">https://operatorpod.net/debug-kubernetes-operator-crashloopbackoff/</guid>

					<description><![CDATA[A complete, step-by-step triage guide for troubleshooting Kubernetes operator pods caught in restart loops, covering exit codes, previous logs, and RBAC permissions.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Few sights are more frustrating in a production Kubernetes cluster than a critical operator pod cycling through <strong>CrashLoopBackOff</strong>. Because operators control secondary workloads like database clusters, message queues, and ingress controllers, an operator failure immediately halts reconciliation and self-healing.</p>



<h2 class="wp-block-heading">1. Inspecting the Previous Container Instance</h2>



<p class="wp-block-paragraph">The single most common mistake when troubleshooting CrashLoopBackOff is running <code>kubectl logs &lt;pod&gt;</code> without flags. Because the container is repeatedly dying and restarting, standard logs only query the newly spawned process, which is often still initializing.</p>



<pre class="wp-block-code"><code># Inspect the crash traceback of the dying container
kubectl logs &lt;pod-name&gt; -n &lt;namespace&gt; --previous</code></pre>



<h2 class="wp-block-heading">2. Checking Exit Codes with kubectl describe</h2>



<p class="wp-block-paragraph">Run <code>kubectl describe pod &lt;pod-name&gt; -n &lt;namespace&gt;</code> and scroll to the <strong>Last State</strong> section:</p>



<ul class="wp-block-list">
<li><strong>Exit Code 137:</strong> The Linux kernel Out-Of-Memory (OOM) killer dispatched SIGKILL. The operator exceeded its <code>resources.limits.memory</code>.</li>
<li><strong>Exit Code 1:</strong> An unhandled application panic or missing environment variable caused an abnormal exit.</li>
<li><strong>Exit Code 143:</strong> Graceful SIGTERM received, usually because a liveness probe failed or the node was cordoned.</li>
</ul>



<h2 class="wp-block-heading">3. Verifying Operator RBAC Permissions</h2>



<p class="wp-block-paragraph">Kubernetes operators require granular ClusterRole permissions to watch Custom Resource Definitions (CRDs). If an operator attempts to query a CRD without appropriate verbs (<code>get, list, watch, update</code>), the apiserver returns HTTP 403 Forbidden, triggering an application panic on startup.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://operatorpod.net/debug-kubernetes-operator-crashloopbackoff/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">14</post-id>	</item>
		<item>
		<title>Hello world!</title>
		<link>https://operatorpod.net/hello-world/</link>
					<comments>https://operatorpod.net/hello-world/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 09 Sep 2026 08:35:56 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">http://operatorpod.net/?p=1</guid>

					<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start writing!]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Welcome to WordPress. This is your first post. Edit or delete it, then start writing!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://operatorpod.net/hello-world/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1</post-id>	</item>
	</channel>
</rss>
