Contents
  1. 1. 前言
  2. 2. 部署cAdvisor
  3. 3. Prometheus配置
  4. 4. grafana

前言

Kubernetes中监控节点中的容器资源使用情况是通过cAdvisor实现的,这在1.12开始发生了变化,1.12之前kubelet集成了cAdvisor,启动kubelet默认打开4194端口就可以使用cAdvisor。
但是1.12之后这个功能废弃了,kubelet不再集成cAdvisor,需要手动部署。本文K8s版本是1.13,我们使用Daemonset重新部署了cAdvisor服务。

部署cAdvisor

部署方法挺简单的,可以参考cadvisor的github
这个页面有现成的yaml文件,我们只需要cluserrole.yaml、cluserrolebinding.yaml、serviceaccount.yaml、daemonset.yaml几个,daemonset.yaml里面的namespace我改成现有的monitor。
很快就建好daemonset

1
2
3
4
5
6
7
NAME                          READY   STATUS    RESTARTS   AGE
cadvisor-6gnv8 1/1 Running 0 5h19m
cadvisor-bd9dn 1/1 Running 0 5h19m
cadvisor-hcszs 1/1 Running 0 5h19m
cadvisor-k9d55 1/1 Running 0 5h19m
cadvisor-rlq8g 1/1 Running 0 5h19m
cadvisor-xsgp2 1/1 Running 0 5h19m

Prometheus配置

如果是从低版本K8s升级过来的,需要在Prometheus中把之前的cadvisor配置段清掉,改成下面的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- job_name: 'k8s-pods'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- api_server: 'https://kubernetes.default.svc'
role: node
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
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

这段配置意思是通过k8s api访问各个节点的cadvisor,__meta_kubernetes_node_name代表节点hostname,替换下面的/api/v1/nodes/${1}/proxy/metrics/cadvisor里就可以访问cadvisor。
例如:https://kubernetes.default.svc:443/api/v1/nodes/k8s-node1/proxy/metrics/cadvisor

prometheus的配置真的可以很灵活,具体参考它的文档

grafana

因为cadvisor改了,prometheus中获取到的指标也可能变,如果发现grafana中的图表显示出问题就要找一下原因了。
可以到Prometheus的后台用语句实际查一下,一般是条件匹配问题。
或者直接找个新的模板。
比如我发现container_cpu_usage_seconds_total中的pod_name就变成了container_label_io_kubernetes_pod_name,这时候要手动改一下,或者找找看有没有新一点点的dashboard下载

Contents
  1. 1. 前言
  2. 2. 部署cAdvisor
  3. 3. Prometheus配置
  4. 4. grafana