一、前言
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-cadvisor
- honor_timestamps: true
- metrics_path: /metrics/cadvisor
- scheme: https
- kubernetes_sd_configs: # kubernetes 自动发现
- - api_server: https://10.1.60.119:6443 # apiserver 地址
- role: node # node 类型的自动发现
- bearer_token_file: ./k8s.token
- tls_config:
- ca_file: ./ca.crt
- insecure_skip_verify: true
- bearer_token_file: ./k8s.token
- tls_config:
- ca_file: ./ca.crt
- insecure_skip_verify: true
- relabel_configs:
- - action: labelmap
- regex: __meta_kubernetes_node_label_(.+)
- metric_relabel_configs:
- - source_labels: [instance]
- separator: ;
- regex: (.+)
- target_label: node
- replacement: $1
- action: 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/cadvisor
- kubernetes_sd_configs:
- - role: node
- relabel_configs:
- - source_labels: [__address__]
- regex: '(.*):10250' #获取所有监听10250接口的地址
- replacement: '${1}:10255' #将以上所有监听10250的地址,改为监听10255接口
- target_label: __address__
- action: replace
- - action: labelmap
- regex: __meta_kubernetes_node_label_(.+)
-
- metric_relabel_configs:
- - source_labels: [instance]
- separator: ;
- regex: (.+)
- target_label: node
- replacement: $1
- action: replace
-
- - source_labels: [pod_name]
- separator: ;
- regex: (.+)
- target_label: pod
- replacement: $1
- action: replace
- - source_labels: [container_name]
- separator: ;
- regex: (.+)
- target_label: container
- replacement: $1
- action: replace
重启prometheus服务
systemctl restart prometheus
以上就是两种不同的Prometheus部署方式去获取kubelet监控数据的配置方法
关于granfana使用的资源监控模板则是使用:K8S Dashboard CN 20211010 StarsL.cn | Grafana Labs
需要配合kube-state-metrics监控一起使用,但是使用该模板在1.24本版以上的k8s中都会出现数据缺失