<p>From the master node in a Kubernetes cluster, I can run <code>kubectl get nodes</code> and see the status of any individual node on the cluster, as <code>kubectl</code> can find the cluster cert for authentication. On my local workstation, assuming I have auth configured correctly, I can do the same.</p>

<p>From the nodes that are <em>joined to the Kubernetes master</em>, is there any way, short of configuring auth so that <code>kubectl</code> works, that I can identify if the node is in <code>Ready</code> or <code>Not Ready</code> state?</p>

<p>I'm trying to build some monitoring tools which reside on the nodes themselves, and I'd like to avoid having to set up service accounts and the like just to check on the node status, in case there's some way I can identify it via kubelet, logs, a file somewhere on the node, a command, etc...</p>

<p>There's no canonical way of doing this, one option is to use kubelet API.</p>

<p>The kubelet exposes an API which the controlplane talks to in order to make it run pods. By default, this runs on port 10250 but this is a write API and needs to be authenticated.</p>

<p>However, the kubelet also has a flag <code>--read-only-port</code> which by default is on port 10255. You can use this to check if the kubelet is ready by hitting the healthz endpoint.</p>

<pre><code>curl http://&lt;ip&gt;:10255/healthz
ok
</code></pre>

<p>This healthz endpoint is also available on localhost:</p>

<pre><code>curl http://localhost:10248/healthz
</code></pre>

<p>If this isn't sufficient, you could possibly check the for a running pod to be available by hitting the pods API:</p>

<pre><code>curl http://&lt;ip&gt;:10255/pods
</code></pre>
