<p><code>kubectl describe nodes</code> gives information on the requests and limits for resources such as CPU and memory. However, the api endpoint <code>api/v1/nodes</code> doesn't provide this information.</p>

<p>Alternatively, I could also hit the <code>api/v1/pods</code> endpoint to get this information per pod which I can accumulate across nodes. But is there already a kubernetes API endpoint which provides the information pertaining to cpu/memory requests and limits per node?</p>

<p>From what I've found in documentation, the endpoint responsible for that is the Kubernetes API Server. </p>

<blockquote>
  <p><em>CPU</em>  and  <em>memory</em>  are each a  <em>resource type</em>. A resource type has a base unit. CPU is specified in units of cores, and memory is
  specified in units of bytes.</p>
  
  <p>CPU and memory are collectively referred to as  <em>compute resources</em>,
  or just  <em>resources</em>. Compute resources are measurable quantities that
  can be requested, allocated, and consumed. They are distinct from 
  <a href="https://kubernetes.io/docs/concepts/overview/kubernetes-api/" rel="nofollow noreferrer">API resources</a>.
  API resources, such as Pods and <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">Services</a>
  are objects that can be read and modified through the Kubernetes API
  server.</p>
</blockquote>

<p>Going further to what is a node:</p>

<blockquote>
  <p>Unlike <a href="https://kubernetes.io/docs/concepts/workloads/pods/pod/" rel="nofollow noreferrer">pods</a> and <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">services</a>, a node is not inherently created by Kubernetes: it is created externally by cloud providers like Google Compute Engine, or exists in your pool of physical or virtual machines. What this means is that when Kubernetes creates a node, it is really just creating an object that represents the node. After creation, Kubernetes will check whether the node is valid or not. 
  [...]
  Currently, there are three components that interact with the Kubernetes node interface: node controller, kubelet, and kubectl.
  [...]
  The capacity of the node (number of cpus and amount of memory) is part of the node object. Normally, nodes register themselves and report their capacity when creating the node object. If you are doing  <a href="https://kubernetes.io/docs/concepts/architecture/nodes/#manual-node-administration" rel="nofollow noreferrer">manual node administration</a>, then you need to set node capacity when adding a node.</p>
  
  <p>The Kubernetes scheduler ensures that there are enough resources for
  all the pods on a node. It checks that the sum of the requests of
  containers on the node is no greater than the node capacity. It
  includes all containers started by the kubelet, but not containers
  started directly by Docker nor processes not in containers.</p>
</blockquote>

<p>Edit:</p>

<blockquote>
  <p>Alternatively, I could also hit the api/v1/pods endpoint to get this
  information per pod which I can accumulate across nodes.</p>
</blockquote>

<p>This is an actual description in what order it works.</p>

<blockquote>
  <p>But is there already a kubernetes API endpoint which provides the
  information pertaining to cpu/memory requests and limits per node?
  Answer to this question is no, there is not. </p>
</blockquote>

<p>Unfortunately there is no endpoint to get that information directly. <code>Kubectl</code> uses several requests to show describe of nodes. You can check them by <code>kubectl -v 8 describe nodes</code>:</p>

<p>When you run <code>kubectl -v=8 describe nodes</code> you can see GET calls in this order:</p>

<pre><code>/api/v1/nodes?includeUninitialized=true    
/api/v1/nodes/minikube
/api/v1/pods
/api/v1/events?fieldSelector
</code></pre>
