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 nodedisplays 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].
Related Concepts¶
Sources¶
^[400-devops-06-kubernetes-k8s-ithelp-day24-readme.md]