<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Koti Vellanki — Mastering Kubernetes the Right Way</title>
    <link>https://koti.dev</link>
    <description>Real Kubernetes lessons from 7+ years in production.</description>
    <language>en-us</language>
    <atom:link href="https://koti.dev/rss.xml" rel="self" type="application/rss+xml"/>
    
    <item>
      <title>Pod Cannot Reach External API? It Is Probably Egress NetworkPolicy</title>
      <link>https://koti.dev/posts/firewall-restriction</link>
      <guid>https://koti.dev/posts/firewall-restriction</guid>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
      <description>Cluster-to-cluster is fine. Cluster-to-Stripe is dead. The rule that hides in plain sight.</description>
    </item>
    <item>
      <title>NetworkPolicy Default-Deny Broke My Whole Namespace. Here Is the Fix</title>
      <link>https://koti.dev/posts/network-connectivity-issues</link>
      <guid>https://koti.dev/posts/network-connectivity-issues</guid>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
      <description>One default-deny egress policy, one black-hole namespace, one very long pager night.</description>
    </item>
    <item>
      <title>It Is Always DNS: Debugging CoreDNS Failures in Kubernetes</title>
      <link>https://koti.dev/posts/dns-resolution-failure</link>
      <guid>https://koti.dev/posts/dns-resolution-failure</guid>
      <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
      <description>The pod is healthy, the Service is up, nslookup hangs. The five-hop debug.</description>
    </item>
    <item>
      <title>Kubernetes Ingress 404? Check These 4 Things Before nginx Logs</title>
      <link>https://koti.dev/posts/ingress-configuration-issue</link>
      <guid>https://koti.dev/posts/ingress-configuration-issue</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <description>IngressClass, TLS secret, host, path. One of these four is why your Ingress is silent.</description>
    </item>
    <item>
      <title>LoadBalancer Stuck on &lt;pending&gt;? It Is Probably Your Selector</title>
      <link>https://koti.dev/posts/loadbalancer-service-misconfig</link>
      <guid>https://koti.dev/posts/loadbalancer-service-misconfig</guid>
      <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
      <description>The cloud provider is fine. Your Service selector matches nothing. Here is the five-minute fix.</description>
    </item>
    <item>
      <title>hostPort Conflicts in Kubernetes: Why Your Pod Is Stuck Pending</title>
      <link>https://koti.dev/posts/port-binding-issues</link>
      <guid>https://koti.dev/posts/port-binding-issues</guid>
      <pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate>
      <description>Two containers, one host port, zero useful error messages. Here is what is happening.</description>
    </item>
    <item>
      <title>Kubernetes Service Returns Nothing? Check targetPort First</title>
      <link>https://koti.dev/posts/service-port-mismatch</link>
      <guid>https://koti.dev/posts/service-port-mismatch</guid>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <description>The pod runs, the service exists, curl returns refused. One number was wrong.</description>
    </item>
    <item>
      <title>Pod Evicted from Disk Pressure in Kubernetes: The Ephemeral Storage Fix</title>
      <link>https://koti.dev/posts/crash-due-to-insufficient-disk-space</link>
      <guid>https://koti.dev/posts/crash-due-to-insufficient-disk-space</guid>
      <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
      <description>Your pod is healthy. The node is out of disk. Guess who gets evicted.</description>
    </item>
    <item>
      <title>Kubernetes Disk I/O Errors: Pod Symptoms, Node Root Cause</title>
      <link>https://koti.dev/posts/disk-io-errors</link>
      <guid>https://koti.dev/posts/disk-io-errors</guid>
      <pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate>
      <description>The container is crashing. The node is the reason. Here is how to prove it in 90 seconds.</description>
    </item>
    <item>
      <title>Read-Only Filesystem in Kubernetes: The Volume Permission Fix</title>
      <link>https://koti.dev/posts/file-permissions-on-mounted-volumes</link>
      <guid>https://koti.dev/posts/file-permissions-on-mounted-volumes</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <description>readOnlyRootFilesystem is a security win and a 2AM footgun. Here is how to get both.</description>
    </item>
    <item>
      <title>The 5 Reasons Your Kubernetes PVC Never Binds</title>
      <link>https://koti.dev/posts/persistent-volume-claim-issues</link>
      <guid>https://koti.dev/posts/persistent-volume-claim-issues</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description>Pending forever. No events. No provisioner. Here is the five-minute diagnosis.</description>
    </item>
    <item>
      <title>Kubernetes volumeMount References Undefined Volume: The Typo Fix</title>
      <link>https://koti.dev/posts/volume-mount-issue</link>
      <guid>https://koti.dev/posts/volume-mount-issue</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <description>API rejects the pod, the error scrolls past, and you lose an hour to one missing block.</description>
    </item>
    <item>
      <title>Kubernetes cgroup OOM: When the Kernel Kills Before kubectl Knows</title>
      <link>https://koti.dev/posts/cgroup-issues</link>
      <guid>https://koti.dev/posts/cgroup-issues</guid>
      <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
      <description>Your pod metrics look fine. The kernel disagrees. Here is what lives beneath kubectl.</description>
    </item>
    <item>
      <title>CrashLoopBackOff from Tight Memory Limits: The 2-Minute Fix</title>
      <link>https://koti.dev/posts/failed-resource-limits</link>
      <guid>https://koti.dev/posts/failed-resource-limits</guid>
      <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
      <description>Pod created. Pod killed. Pod created. Pod killed. Welcome to the forever loop.</description>
    </item>
    <item>
      <title>OOMKilled in Kubernetes: Why the Linux Kernel Murdered Your Pod</title>
      <link>https://koti.dev/posts/oom-killed</link>
      <guid>https://koti.dev/posts/oom-killed</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
      <description>Memory limits, cgroups, and the OOM score nobody reads. Why your container is dead and the node is perfectly fine.</description>
    </item>
    <item>
      <title>Kubernetes Resource Limits Must Be Greater Than Requests: Here&apos;s Why</title>
      <link>https://koti.dev/posts/resource-requests-limits-mismatch</link>
      <guid>https://koti.dev/posts/resource-requests-limits-mismatch</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <description>One of the few Kubernetes errors that fails loudly at apply time, and the one most people still misread.</description>
    </item>
    <item>
      <title>Cluster Autoscaler Not Scaling Up? The 4 Signals to Check First</title>
      <link>https://koti.dev/posts/cluster-autoscaler-issues</link>
      <guid>https://koti.dev/posts/cluster-autoscaler-issues</guid>
      <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
      <description>Twenty replicas asking for CPU the cluster does not have, and an autoscaler that stays silent. Here is the debug path.</description>
    </item>
    <item>
      <title>Taints and Tolerations in Kubernetes: Why Your Pod Won&apos;t Land on Any Node</title>
      <link>https://koti.dev/posts/taints-and-tolerations-mismatch</link>
      <guid>https://koti.dev/posts/taints-and-tolerations-mismatch</guid>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <description>Half the Pending pods I have debugged in my career were a missing toleration. Here is the mental model that ends the confusion.</description>
    </item>
    <item>
      <title>Node Affinity in Kubernetes: The Hostname Typo That Pending&apos;d My Pod</title>
      <link>https://koti.dev/posts/node-affinity-issue</link>
      <guid>https://koti.dev/posts/node-affinity-issue</guid>
      <pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate>
      <description>One wrong letter in a hostname inside a nodeAffinity block, and the scheduler goes silent for an hour.</description>
    </item>
    <item>
      <title>Pod Affinity Violation in Kubernetes: The Silent Pending Trap</title>
      <link>https://koti.dev/posts/affinity-rules-violation</link>
      <guid>https://koti.dev/posts/affinity-rules-violation</guid>
      <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
      <description>The scheduler will wait forever for an affinity rule that can never be satisfied, and it will never tell you out loud.</description>
    </item>
    <item>
      <title>Why Is Your Kubernetes Pod Stuck in Pending? The Real Fix</title>
      <link>https://koti.dev/posts/pod-stuck-pending</link>
      <guid>https://koti.dev/posts/pod-stuck-pending</guid>
      <pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate>
      <description>45 minutes staring at a Pending pod, a Slack channel on fire, and one line of kubectl output that finally made sense.</description>
    </item>
    <item>
      <title>Liveness and Readiness Failing Together: Why Startup Probes Exist</title>
      <link>https://koti.dev/posts/liveness-readiness-failure</link>
      <guid>https://koti.dev/posts/liveness-readiness-failure</guid>
      <pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate>
      <description>Two probes, one bug, two outages. Read the event ages and you will know the order of operations.</description>
    </item>
    <item>
      <title>Liveness Probe Killing Your Kubernetes Pods? Read This First</title>
      <link>https://koti.dev/posts/liveness-probe-failure</link>
      <guid>https://koti.dev/posts/liveness-probe-failure</guid>
      <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
      <description>Exit code 137 with clean app logs means the probe is the murderer. Here is how to catch it in the act.</description>
    </item>
    <item>
      <title>Kubernetes Pod Running But Not Ready: Readiness Probe Failures Explained</title>
      <link>https://koti.dev/posts/readiness-probe-failure</link>
      <guid>https://koti.dev/posts/readiness-probe-failure</guid>
      <pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate>
      <description>STATUS says Running. READY says 0/1. Users see 503s. Here is where the pod is hiding.</description>
    </item>
    <item>
      <title>ImagePullBackOff in Kubernetes: The Timer on Top of the Error</title>
      <link>https://koti.dev/posts/image-pull-backoff</link>
      <guid>https://koti.dev/posts/image-pull-backoff</guid>
      <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
      <description>Same cause as ErrImagePull, plus a backoff clock that makes the cluster look broken when it is just being polite.</description>
    </item>
    <item>
      <title>ErrImagePull in Kubernetes: Typo, Auth, or Network?</title>
      <link>https://koti.dev/posts/image-pull-error</link>
      <guid>https://koti.dev/posts/image-pull-error</guid>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <description>One status, three completely different fixes. The describe event tells you which one you are actually looking at.</description>
    </item>
    <item>
      <title>CrashLoopBackOff in Kubernetes: Read the Exit Code First</title>
      <link>https://koti.dev/posts/crashloopbackoff</link>
      <guid>https://koti.dev/posts/crashloopbackoff</guid>
      <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
      <description>A status, a timer, and an exit code. Learn to read all three and you debug in sixty seconds instead of forty minutes.</description>
    </item>
    <item>
      <title>RunContainerError in Kubernetes: Why Your Pod Never Starts</title>
      <link>https://koti.dev/posts/wrong-container-command</link>
      <guid>https://koti.dev/posts/wrong-container-command</guid>
      <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
      <description>The kubelet pulled the image, runc tried to exec, and nothing happened. Here is the one line that tells you why.</description>
    </item>
    <item>
      <title>Day 0 — Spin Up a Real Kubernetes Cluster in One Command</title>
      <link>https://koti.dev/posts/day-0-cluster-setup</link>
      <guid>https://koti.dev/posts/day-0-cluster-setup</guid>
      <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
      <description>Before you debug a single Pending pod, you need a real cluster. Here is how to get one on AWS, GCP, or Azure with a single command — and the Terraform that makes it boring.</description>
    </item>
  </channel>
</rss>