This documentation is intended to be a complete reflection of the current state of the exposed metrics of kube-state-metrics.
Any contribution to improving this documentation or adding sample usages will be appreciated.
Stages about metrics are grouped into three categories:
Stage | Description |
---|---|
EXPERIMENTAL | Metrics which normally correspond to the Kubernetes API object alpha status or spec fields and can be changed at any time. |
STABLE | Metrics which should have very few backwards-incompatible changes outside of major version updates. |
DEPRECATED | Metrics which will be removed once the deprecation timeline is met. |
- The following non-generic resource metrics for pods are marked deprecated. They will be removed in kube-state-metrics v2.0.0.
kube_pod_container_resource_requests
andkube_pod_container_resource_limits
are the replacements withresource
labels representing the resource name andunit
labels representing the resource unit.- kube_pod_container_resource_requests_cpu_cores
- kube_pod_container_resource_limits_cpu_cores
- kube_pod_container_resource_requests_memory_bytes
- kube_pod_container_resource_limits_memory_bytes
- The following non-generic resource metrics for nodes are marked deprecated. They will be removed in kube-state-metrics v2.0.0.
kube_node_status_capacity
andkube_node_status_allocatable
are the replacements withresource
labels representing the resource name andunit
labels representing the resource unit.- kube_node_status_capacity_pods
- kube_node_status_capacity_cpu_cores
- kube_node_status_capacity_memory_bytes
- kube_node_status_allocatable_pods
- kube_node_status_allocatable_cpu_cores
- kube_node_status_allocatable_memory_bytes
Per group of metrics there is one file for each metrics. See each file for specific documentation about the exposed metrics:
- CronJob Metrics
- DaemonSet Metrics
- Deployment Metrics
- Job Metrics
- LimitRange Metrics
- Node Metrics
- PersistentVolume Metrics
- PersistentVolumeClaim Metrics
- Pod Metrics
- Pod Disruption Budget Metrics
- ReplicaSet Metrics
- ReplicationController Metrics
- ResourceQuota Metrics
- Service Metrics
- StatefulSet Metrics
- StorageClass Metrics
- Namespace Metrics
- Horizontal Pod Autoscaler Metrics
- Endpoint Metrics
- Secret Metrics
- ConfigMap Metrics
- Ingress Metrics
- CertificateSigningRequest Metrics
- VerticalPodAutoscaler Metrics
When an additional, not provided by default label is needed, a Prometheus matching operator can be used to extend single metrics output.
This example adds label_release
to the set of default labels of the kube_pod_status_ready
metric
and allows you select or group the metrics by helm release label:
kube_pod_status_ready * on (namespace, pod) group_left(label_release) kube_pod_labels
Another useful example would be to query the memory usage of pods by its phase
, such as Running
:
sum(kube_pod_container_resource_requests_memory_bytes) by (namespace, pod, node)
* on (pod) group_left() (sum(kube_pod_status_phase{phase="Running"}) by (pod, namespace) == 1)
Additionally, options for kube-state-metrics
can be passed when executing as a CLI, or in a kubernetes / openshift environment. More information can be found here: CLI Arguments