kube-state-metrics¶
kube-state-metrics is a Metrics exporter designed to collect and generate Metrics about the state of Kubernetes objects[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]^[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]。 It functions as a service that listens to the Kubernetes API server and generates Metrics regarding the state of objects, such as Pods, Deployments, and Nodes[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]^[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
Key Features¶
- Broad Resource Coverage: It is capable of collecting Metrics for the vast majority of Kubernetes built-in resources[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. This includes core resources like Pods, Nodes, Services, ConfigMaps, Secrets, and Namespaces[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md], as well as resources from extensions (DaemonSets, Deployments, ReplicaSets), apps (StatefulSets), batch (Jobs, CronJobs), autoscaling (HPA), and policy (PodDisruptionBudgets)[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]^[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
- Self-Monitoring: In addition to cluster resources, it exposes Metrics about its own operational performance[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. This includes statistics on the total number of resources collected and the count of any collection errors[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
- Prometheus Integration: It is optimized to serve as a Metrics target for Prometheus[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. It exposes an HTTP endpoint (typically port 8080) where Metrics are formatted for scraping[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
Deployment and Configuration¶
RBAC Configuration¶
To function correctly, kube-state-metrics requires extensive read permissions to query the status of Kubernetes resources[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. This typically necessitates the creation of a dedicated ServiceAccount, ClusterRole, and ClusterRoleBinding[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
The ClusterRole grants specific permissions necessary for its operation, including:
* List and Watch: Permissions to list and watch resources are required for almost all monitored groups[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
* API Groups: Permissions must be granted for various API groups, including the core group (""), policy, extensions, apps, batch, and autoscaling[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]^[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
* Resource Scope: It targets resources such as ConfigMaps, Secrets, Nodes, Pods, Services, ResourceQuotas, PersistentVolumes, PersistentVolumeClaims, and more[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].
Service Exposure¶
- Namespace: It is commonly deployed within the
kube-systemnamespace[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. - Deployment Type: It is often deployed as a
Deploymentto ensure high availability and scalability[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. - Endpoint: The service exposes Metrics on port
8080via the HTTP protocol[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md]. A Health Check endpoint is also available at/healthz[400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md][400-devops__06-Kubernetes__k8s-paas__07.Promtheus监控k8s企业级应用.md].