Kubelet cAdvisor 资源监控

网友投稿 267 2022-11-02


Kubelet cAdvisor 资源监控

Kubemetes 集群中如何监控资源的使用情况?

Kubemetes 集群中,应用程序的执行情况可 以在不同的级别上监测到,这些级别包括:

容器、 Pod 、 Service 整个集群。

作为 Kubemetes 集群的 一部分 Kubemetes 望提供给用户 详细的各个级别的资源使用信息,这将使用户能够深入地了解应用的执行情况,并找到应用中可能的瓶颈。

kubelet 作为连接 Kubemetes Master 和各节点机之间的桥梁,管理运行在节点机上的 Pod容器。 kubelet 将每个 Pod 转换成它的成员容器,同时从 cAdvisor 获取单独的容器使用统计信息, 然后通过该阻STAPI 暴露这些聚合后的 Pod 资源使用的统计信息。

容器监控

说到容器监控我们自然会想到​​cAdvisor​​​,我们前面也说过​​cAdvisor​​​已经内置在了 kubelet 组件之中,所以我们不需要单独去安装,​​cAdvisor​​​的数据路径为​​/api/v1/nodes//proxy/metrics​​,同样我们这里使用 node 的服务发现模式,因为每一个节点下面都有 kubelet,自然都有​​cAdvisor​​采集到的数据指标,配置如下:

- job_name: 'kubernetes-cadvisor' kubernetes_sd_configs: - role: node scheme: tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - target_label: __address__ replacement: kubernetes.default.svc:443 - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor

上面的配置和我们之前配置 node-exporter 的时候几乎是一样的,区别是我们这里使用了 的协议,另外需要注意的是配置了 ca.cart 和 token 这两个文件,这两个文件是 Pod 启动后自动注入进来的,通过这两个文件我们可以在 Pod 中访问 apiserver,比如我们这里的​​__address__​​​不在是 nodeip 了,而是 kubernetes 在集群中的服务地址,然后加上​​__metrics_path__​​​的访问路径:​​/api/v1/nodes/${1}/proxy/metrics/cadvisor​​,现在同样更新下配置,然后查看 Targets 路径:

然后我们可以切换到 Graph 路径下面查询容器相关数据,比如我们这里来查询集群中所有 Pod 的 CPU 使用情况,这里用的数据指标是 container_cpu_usage_seconds_total,然后去除一些无效的数据,查询1分钟内的数据,由于查询到的数据都是容器相关的,最好要安装 Pod 来进行聚合,对应的​​promQL​​语句如下:

sum by (pod_name)(rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ))

prometheus cadvisor graph

我们可以看到上面的结果就是集群中的所有 Pod 在1分钟之内的 CPU 使用情况的曲线图。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Go struct 和 interface:结构体与接口都实现了哪些功能?
下一篇:Java调用Shell命令和脚本的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~