Kubernetes资源对象监控——kube-state-metrics详解

1、简介

前面我们使用node发现模式监控node节点资源,监控kubelet,schedule,controlle-manager,pod等。但是由于这些都是k8s内置的指标数据,而且其他的资源对象也需要监控的,例如Deployment,Daemonset,ConfigMap等等的资源对象。因此我们可以额外在K8s集群部署一个指标采集系统kube-state-metrics,通过它去与apiserver通信,然后prometheus再去获取它的指标数据。需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据,并不会存储这些指标数据,可以使用 Prometheus 来抓取这些数据然后存储。主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个 replicas?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?我有多少 job 在运行中。

2、Metric-Server与Kube-State-Metrics

  • 关注点和功能
    • Metric-Server:重点提供资源度量API的实现,如CPU、内存等关键性能指标,主要用于资源监控和事件响应,例如水平Pod自动扩缩容(HPA)。
    • Kube-State-Metrics:侧重于Kubernetes资源对象的状态指标,如副本状态、端点数量等,主要用于业务监控和状态检查。
  • 安装配置与依赖环境
    • Metric-Server:可能需额外配置以支持新版本Kubernetes,如添加node/stats的权限,有时需要手动配置。
    • Kube-State-Metrics**:安装和配置较为简单,主要依赖Kubernetes API Server,不需要特别的硬件支持或复杂配置。
  • 数据存储与处理
    • Metric-Server:本身不提供数据存储,但可与其他时序数据库如InfluxDB配合使用,提供长期数据存储解决方案。
    • Kube-State-Metrics**:不负责数据的存储,通常与Prometheus等监控系统配合使用,抓取并存储数据。
  • 使用场景和监控策略
    • Metric-Server:在需要基础资源监控、执行资源相关命令(如kubectl top node)或基于资源利用率的自动化决策(如HPA)时使用。
    • Kube-State-Metrics:在需要详细了解Kubernetes各种资源对象状态(如Deployment状态)时使用,帮助监控和分析资源对象的变化。

3、部署

#创建 sa,并对 sa 授权
[root@mast01 Prometheus]# kubectl apply -f kube-state-metrics-rbac.yaml 
serviceaccount/kube-state-metrics created
clusterrole.rbac.authorization.k8s.io/kube-state-metrics created
clusterrolebinding.rbac.authorization.k8s.io/kube-state-metrics created

#上传镜像到 k8s 各个工作节点
[root@work01 ~]# docker load -i kube-state-metrics_1_9_0.tar.gz
Loaded image: quay.io/coreos/kube-state-metrics:v1.9.0

#部署 yaml 文件
[root@mast01 Prometheus]# kubectl apply -f kube-state-metrics-deploy.yaml
deployment.apps/kube-state-metrics created

#查看 kube-state-metrics 是否部署成功 
[root@mast01 Prometheus]# kubectl get pods -n kube-system -l app=kube-state-metrics
NAME                                 READY   STATUS   RESTARTS   AGE
kube-state-metrics-58d4957bc5-gsrjg   1/1     Running   0         32s

#创建 service
[root@mast01 Prometheus]# kubectl apply -f kube-state-metrics-svc.yaml
service/kube-state-metrics created

#查看 service 是否创建成功 
[root@mast01 Prometheus]# kubectl get svc -n kube-system | grep kube-state-metrics
kube-state-metrics   ClusterIP   10.106.177.208   <none>        8080/TCP                 49s

4、在 grafana web 界面导入 Kubernetes Cluster (Prometheus)

图片

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/417611.html

联系我们
联系我们
分享本页
返回顶部