Updated 2 November 2026 · Published by Zoorik
Metrics Server (metrics-server) is a Kubernetes cluster add-on that collects CPU and memory use from the kubelet on each node. It serves that data through the Kubernetes API as the Metrics API, metrics.k8s.io.
The Horizontal Pod Autoscaler (HPA), the Vertical Pod Autoscaler (VPA) and kubectl top read it. The Metrics API answers only once metrics-server, or another adapter that serves it, is deployed.
How Metrics Server works
- It tracks nodes and pods through the Kubernetes API, and queries each node’s kubelet over HTTP. From metrics-server v0.6.0 it reads
/metrics/resource, and older versions used/stats/summary. - An APIService registers
metrics.k8s.iowith the API server’s aggregation layer. So Kubernetes role-based access control (RBAC) decides who can read it. - CPU is average core use over a time window. Memory is the working set in bytes, at the moment it was collected.
Metrics Server on AKS and EKS
On AKS, Metrics Server already runs in the kube-system namespace, which every cluster gets by default.
Amazon EKS doesn’t deploy Metrics Server by default. AWS’s current route is the Metrics Server community add-on. In the AWS console, open your cluster, choose Add-ons, then Get More Add-ons, then Metrics Server.
AWS still documents the manifest route: apply it, check the deployment, then read node use.
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml $ kubectl get deployment metrics-server -n kube-system $ kubectl top nodes
If kubectl top returns Error from server (Forbidden), your Kubernetes RBAC identity lacks permission to read cluster metrics.
What Metrics Server isn’t for
Metrics Server keeps a short-term, in-memory view. AWS says its metrics are meant for point-in-time analysis, not for history. They can’t be used as a monitoring solution, or for purposes other than autoscaling.
It serves only CPU and memory. To scale on other metrics, you need an adapter for the custom.metrics.k8s.io or external.metrics.k8s.io API.
kube-state-metrics is a different add-on. It exposes the state of objects, such as status, labels and start times, for a tool such as Prometheus to scrape.
Why Metrics Server matters for your cloud cost
As load drops, the HPA reads this API and scales replicas back down. Its CPU target is a share of each pod’s CPU request. If any container has no CPU request, the HPA takes no action on CPU.
Compare kubectl top pods with each pod’s requests. The gap is node capacity your requests hold but no pod uses, and you still pay for it.
- Coral rebalances CPU and memory requests on AKS and EKS to match real use. It drains spare nodes so your autoscaler can remove them.
- The free assessment works out your own figure. It samples use with
kubectl top. Without Metrics Server, requests stay as they are and only surplus nodes count.
Read next: Kubernetes pod right sizing: set requests from real use
Sources: Kubernetes, “Resource metrics pipeline” (opens in a new tab); Kubernetes, “Tools for Monitoring Resources” (opens in a new tab); Kubernetes, “Horizontal Pod Autoscaling” (opens in a new tab); Kubernetes, “Metrics for Kubernetes Object States” (opens in a new tab); Kubernetes, “Resource Management for Pods and Containers” (opens in a new tab); AWS, “View resource usage with the Kubernetes Metrics Server” (opens in a new tab); Microsoft Learn, “Azure Kubernetes Service (AKS) Core Concepts” (opens in a new tab).