一、前言
k8s集群的kubelet服务内部有自带的cadvisor服务用于收集k8s集群的监控数据,所以可以通过调用kubelet的接口就能获取pod的资源监控数据,在新版本的k8s中,kubelet的监控数据获取端口为10250端口,老版本的是10255端口
二、配置prometheus获取监控数据
以下分为两种情况,一种是在k8s集群内部署的prometheus,一种是在k8s集群外部署的prometheus
以下是k8s集群外部署的prometheus配置
编辑Prometheus配置文件
vi /opt/prometheus/prometheus/prometheus.yml
scrape_configs: #在该配置项下写入以下内容- job_name: k8s-cadvisorhonor_timestamps: truemetrics_path: /metrics/cadvisorscheme: httpskubernetes_sd_configs: # kubernetes 自动发现- api_server: https://10.1.60.119:6443 # apiserver 地址role: node # node 类型的自动发现bearer_token_file: ./k8s.tokentls_config:ca_file: ./ca.crtinsecure_skip_verify: truebearer_token_file: ./k8s.tokentls_config:ca_file: ./ca.crtinsecure_skip_verify: truerelabel_configs:- action: labelmapregex: __meta_kubernetes_node_label_(.+)metric_relabel_configs:- source_labels: [instance]separator: ;regex: (.+)target_label: nodereplacement: $1action: replace
以上关于token和ca证书的获取可以参考:k8s集群授权prometheus(集群外部署)_Apex Predator的博客-CSDN博客
token是创建一个名为k8s.token的文件,把k8s集群获取到的token放进去即可,ca证书就直接拷贝过来
重启prometheus服务
systemctl restart prometheus
查看Prometheus是否获取到kubelet接口数据
以下是k8s集群内部署的prometheus配置
vi /opt/prometheus/prometheus/prometheus.yml
scrape_configs: #在该配置项下写入以下内容- job_name: 'k8s-cadvisor'metrics_path: /metrics/cadvisorkubernetes_sd_configs:- role: noderelabel_configs:- source_labels: [__address__]regex: '(.*):10250' #获取所有监听10250接口的地址replacement: '${1}:10255' #将以上所有监听10250的地址,改为监听10255接口target_label: __address__action: replace- action: labelmapregex: __meta_kubernetes_node_label_(.+)metric_relabel_configs:- source_labels: [instance]separator: ;regex: (.+)target_label: nodereplacement: $1action: replace- source_labels: [pod_name]separator: ;regex: (.+)target_label: podreplacement: $1action: replace- source_labels: [container_name]separator: ;regex: (.+)target_label: containerreplacement: $1action: replace
重启prometheus服务
systemctl restart prometheus
以上就是两种不同的Prometheus部署方式去获取kubelet监控数据的配置方法
关于granfana使用的资源监控模板则是使用:K8S Dashboard CN 20211010 StarsL.cn | Grafana Labs
需要配合kube-state-metrics监控一起使用,但是使用该模板在1.24本版以上的k8s中都会出现数据缺失