0x01.kube-state-metrics:
官网: https://github.com/kubernetes/kube-state-metrics
版本分布:
kube-state-metrics | Kubernetes client-go Version |
---|---|
v2.8.2 | v1.26 |
v2.9.2 | v1.26 |
v2.10.1 | v1.27 |
v2.11.0 | v1.28 |
v2.12.0 | v1.29 |
main | v1.30 |
0x02.metrics-server
官网: https://github.com/kubernetes-sigs/metrics-server
Metrics Server | Metrics API group/version | Supported Kubernetes version |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 |
1.19+ |
0.6.x | metrics.k8s.io/v1beta1 |
1.19+ |
0.5.x | metrics.k8s.io/v1beta1 |
*1.8+ |
0.4.x | metrics.k8s.io/v1beta1 |
*1.8+ |
0.3.x | metrics.k8s.io/v1beta1 |
1.8-1.21 |
0x03.使用场景区别
kube-state-metrics
使用场景:
资源状态监控:kube-state-metrics 主要用于收集 Kubernetes 集群中资源的状态信息,包括 Pods、Nodes、Deployments、Services 等。这些指标帮助你了解集群中资源的状态和配置情况。
静态指标:适用于需要监控 Kubernetes 资源的状态和元数据的场景。例如,监控 Pods 的生命周期状态、Deployments 的副本数是否满足预期、Nodes 是否健康等。
Prometheus 监控:通常与 Prometheus 一起使用,通过抓取 kube-state-metrics 生成的指标来建立监控和告警体系。
示例指标:
kube_pod_status_phase{namespace="default",pod="my-pod"}: Pod 的状态(例如 Running、Pending 等)。
kube_deployment_replicas{namespace="default",deployment="my-deployment"}: Deployment 的副本数。
kube_node_status_condition{node="node1",condition="Ready"}: Node 的状态条件。
metrics-server
使用场景:
资源性能监控:metrics-server 主要用于收集 Kubernetes 集群中 Pods 和 Nodes 的实时性能指标,包括 CPU 和内存使用率等。这些指标帮助你了解资源的性能使用情况。
动态指标:适用于需要实时监控 Kubernetes 资源的性能和使用情况的场景。例如,Horizontal Pod Autoscaler (HPA) 和 Kubernetes Dashboard 都依赖于 metrics-server 提供的指标。
自动伸缩:metrics-server 提供的性能指标被 HPA 使用,以便根据实际的资源使用情况自动调整 Pod 副本数。
示例指标:
cpu_usage: Pod 或 Node 的 CPU 使用率。
memory_usage: Pod 或 Node 的内存使用率。
主要区别
指标类型:
kube-state-metrics 提供的是集群中资源的状态信息和元数据(静态指标),例如 Pod 状态、Deployment 副本数等。
metrics-server 提供的是实时的资源性能指标(动态指标),例如 CPU 和内存使用情况。
用途:
kube-state-metrics 主要用于监控 Kubernetes 资源的状态和配置,帮助管理员了解资源是否按预期运行。
metrics-server 主要用于监控资源的性能和使用情况,帮助进行自动伸缩和实时性能监控。
数据源:
kube-state-metrics 从 Kubernetes API Server 获取数据。
metrics-server 从 kubelet 获取实时的性能数据。
依赖关系:
kube-state-metrics 通常用于构建基于 Prometheus 的监控和告警系统。
metrics-server 通常用于支持 HPA 和 Kubernetes Dashboard 的实时性能监控需求。
总结
使用 kube-state-metrics 监控 Kubernetes 资源的状态和元数据,例如 Pods 是否运行、Nodes 是否健康等。
使用 metrics-server 监控 Kubernetes 资源的性能和使用情况,例如 CPU 和内存使用率,特别是在需要自动伸缩时。
通过结合使用这两个工具,你可以全面了解 Kubernetes 集群的运行状况,从资源状态到性能使用情况,确保集群的稳定和高效运行。
0x04. 部署
- kube-state-metrics
kubectl apply -f https://raw.githubusercontent.com/kubernetes/kube-state-metrics/master/examples/standard/deployment.yaml -n monitoring
- metrics-server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
网友评论