一、前言
k8s集群的kubelet服务内部有自带的cadvisor服务用于收集k8s集群的监控数据,所以可以通过调用kubelet的接口就能获取pod的资源监控数据,在新版本的k8s中,kubelet的监控数据获取端口为10250端口,老版本的是10255端口
二、配置prometheus获取监控数据
以下分为两种情况,一种是在k8s集群内部署的prometheus,一种是在k8s集群外部署的prometheus
以下是k8s集群外部署的prometheus配置
编辑Prometheus配置文件
vi /opt/prometheus/prometheus/prometheus.yml
bash
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
bash
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中都会出现数据缺失