<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>KubeGlance Blog — Kubernetes Troubleshooting &amp; Cluster Operations</title><link>https://kubeglance.com/blog/</link><description>Recent content on KubeGlance Blog — Kubernetes Troubleshooting &amp; Cluster Operations</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 18 Aug 2026 02:30:00 +0100</lastBuildDate><atom:link href="https://kubeglance.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>How kubectl decides what to put in the STATUS column</title><link>https://kubeglance.com/blog/kubectl-pod-status-column/</link><pubDate>Tue, 18 Aug 2026 02:30:00 +0100</pubDate><guid>https://kubeglance.com/blog/kubectl-pod-status-column/</guid><description>&lt;p>The STATUS column in &lt;code>kubectl get pods&lt;/code> is not a field. There is no &lt;code>status.status&lt;/code>
in the Pod API, and it is not &lt;code>status.phase&lt;/code> either — phase only has five possible
values (&lt;code>Pending&lt;/code>, &lt;code>Running&lt;/code>, &lt;code>Succeeded&lt;/code>, &lt;code>Failed&lt;/code>, &lt;code>Unknown&lt;/code>), and none of them
is &lt;code>CrashLoopBackOff&lt;/code>.&lt;/p>
&lt;p>STATUS is computed client-side, by kubectl, every time you run the command. Knowing
the algorithm explains most of the confusing output you have ever seen from it.&lt;/p></description></item><item><title>RBAC for a read-only Kubernetes user (and why view isn't enough)</title><link>https://kubeglance.com/blog/kubernetes-read-only-rbac/</link><pubDate>Tue, 18 Aug 2026 02:00:00 +0100</pubDate><guid>https://kubeglance.com/blog/kubernetes-read-only-rbac/</guid><description>&lt;p>Kubernetes has no &amp;ldquo;read-only&amp;rdquo; switch. There is no flag, no mode, and no account
type. Read-only is just a set of verbs — &lt;code>get&lt;/code>, &lt;code>list&lt;/code>, &lt;code>watch&lt;/code> — and everything
depends on which resources you attach them to.&lt;/p>
&lt;p>The obvious move is to use the built-in &lt;code>view&lt;/code> ClusterRole. It is the right
starting point, but it has three properties that catch people out, and the third
one is a security problem rather than an inconvenience.&lt;/p></description></item><item><title>How KUBECONFIG merges multiple files (first wins, not last)</title><link>https://kubeglance.com/blog/kubeconfig-merge-rules/</link><pubDate>Tue, 18 Aug 2026 01:30:00 +0100</pubDate><guid>https://kubeglance.com/blog/kubeconfig-merge-rules/</guid><description>&lt;p>You can point &lt;code>KUBECONFIG&lt;/code> at several files at once and kubectl will treat them as
one configuration:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">export&lt;/span> &lt;span class="nv">KUBECONFIG&lt;/span>&lt;span class="o">=&lt;/span>~/.kube/config:~/.kube/work.yaml:~/.kube/prod.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Most people assume this behaves like &lt;code>PATH&lt;/code>-style overriding, where the last
definition wins. &lt;strong>It is the opposite.&lt;/strong> The first file to define a given name wins
outright, and every later definition of that name is discarded silently.&lt;/p>
&lt;p>That single inversion is behind almost every &amp;ldquo;why am I connected to the wrong
cluster&amp;rdquo; story.&lt;/p></description></item><item><title>How to fix CrashLoopBackOff in Kubernetes</title><link>https://kubeglance.com/blog/crashloopbackoff/</link><pubDate>Tue, 18 Aug 2026 01:00:00 +0100</pubDate><guid>https://kubeglance.com/blog/crashloopbackoff/</guid><description>&lt;p>&lt;code>CrashLoopBackOff&lt;/code> is not an error. It is Kubernetes telling you it has given up
restarting your container &lt;em>for now&lt;/em> and is sitting out a waiting period before it
tries again. The actual failure already happened, and the status has replaced it.&lt;/p>
&lt;p>That distinction is the whole reason people get stuck. You cannot fix
&lt;code>CrashLoopBackOff&lt;/code>, because nothing is broken called &lt;code>CrashLoopBackOff&lt;/code>. You fix
whatever made the container exit, and the status resolves itself.&lt;/p></description></item><item><title>ImagePullBackOff and ErrImagePull: what they mean and how to fix them</title><link>https://kubeglance.com/blog/imagepullbackoff-errimagepull/</link><pubDate>Tue, 18 Aug 2026 00:30:00 +0100</pubDate><guid>https://kubeglance.com/blog/imagepullbackoff-errimagepull/</guid><description>&lt;p>These two statuses are the same problem at two different moments. &lt;code>ErrImagePull&lt;/code>
is the kubelet telling you a pull just failed. &lt;code>ImagePullBackOff&lt;/code> is the kubelet
telling you it has failed enough times that it is now waiting before trying again.&lt;/p>
&lt;p>The important consequence: &lt;strong>by the time you look, the status has usually changed
from the useful one to the useless one.&lt;/strong> &lt;code>ImagePullBackOff&lt;/code> contains no
information about why. The reason is in the pod&amp;rsquo;s Events, and that is the only
place it lives.&lt;/p></description></item></channel></rss>