<p>Without using Heapster is there any way to collect like CPU or Disk metrics about a node within a Kubernetes cluster?</p>

<p>How does Heapster even collect those metrics in the first place?</p>

<p>Kubernetes monitoring is detailed in the documentation <a href="http://kubernetes.io/v1.1/docs/user-guide/monitoring.html" rel="noreferrer">here</a>, but that mostly covers tools using heapster.</p>

<p>Node-specific information is exposed through the cAdvisor UI which can be accessed on port 4194 (see the commands below to access this through the proxy API).</p>

<p>Heapster queries the kubelet for stats served at <code>&lt;kubelet address&gt;:10255/stats/</code> (other endpoints can be found in the code <a href="https://github.com/kubernetes/kubernetes/blob/release-1.1/pkg/kubelet/server.go#L971" rel="noreferrer">here</a>).</p>

<p>Try this:</p>

<pre><code>$ kubectl proxy &amp;
Starting to serve on 127.0.0.1:8001
$ NODE=$(kubectl get nodes -o=jsonpath="{.items[0].metadata.name}")
$ curl -X "POST" -d '{"containerName":"/","subcontainers":true,"num_stats":1}' localhost:8001/api/v1/proxy/nodes/${NODE}:10255/stats/container
...
</code></pre>

<p>Note that these endpoints are not documented as they are intended for internal use (and debugging), and may change in the future (we eventually want to offer a more stable versioned endpoint).</p>

<p><strong>Update:</strong></p>

<p>As of Kubernetes version 1.2, the Kubelet exports a "summary" API that aggregates stats from all Pods:</p>

<pre><code>$ kubectl proxy &amp;
Starting to serve on 127.0.0.1:8001
$ NODE=$(kubectl get nodes -o=jsonpath="{.items[0].metadata.name}")
$ curl localhost:8001/api/v1/proxy/nodes/${NODE}:10255/stats/summary
...
</code></pre>
