Skip to content

Kubernetes Metrics.k8s.io API

The metrics.k8s.io API is a Kubernetes resource Metrics API that provides access to CPU and memory usage data for nodes and pods^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]. It is commonly utilized by monitoring tools and the Horizontal Pod Autoscaler to determine resource consumption^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

This API is typically implemented by an add-on like the Metrics Server, as Kubernetes does not provide these Metrics out-of-the-box^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

How it works

The API is exposed through the API Server at the path /apis/[Metrics](<./metrics.md>).k8s.io^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]. It functions as a cluster-level aggregator, collecting data from kubelet on each node and serving it via the kube-aggregator^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

In a standard Metrics Server deployment, data is stored only in memory^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]. Consequently, historical data is not preserved, and metric resets occur if the server restarts^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

RBAC Requirements

Access to the Metrics API is controlled by Cluster Roles. The system:aggregated-metrics-reader role grants read permissions (get, list, watch) for pods and nodes resources within the metrics.k8s.io API group^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

Usage

Users typically interact with these Metrics using the kubectl top command^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

  • View Node Metrics: kubectl top node displays CPU and Memory usage for all nodes^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].
  • View Pod Metrics: kubectl top pods -n <namespace> displays Metrics for pods within a specific namespace^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md].

Sources

^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]