Prometheus收集边缘设备数据

system-architecture

本文档主要讲述如何在已有的OpenYurt集群上通过Raven实现Promethues对边缘端设备的metrics进行采集,如果未安装Raven组件请参考安装教程。在边缘场景中,云、边往往处于不同的网络域内,因此需要Raven项目实现跨网络域通信。位于云端的Prometheus组件需要跨网络域拉取集群资源metrics,针对边缘的Gateway节点相关资源信息则通过VPN获取,针对边缘非Gateway节点则通过该网路域内Gateway节点转发拉取资源信息。

环境要求

如果你还没有OpenYurt集群,你可以参考 安装手册 来初始化一个OpenYurt集群或将一个Kubernetes集群转换为OpenYurt集群。

  • OpenYurt v1.2+
  • Raven v0.3.0+
  • Prometheus

Prometheus 配置

Prometheus默认使用IP来访问节点的metric地址,Raven项目实现了跨网络域通信,因此在OpenYurt项目上使用Prometheus与原生k8s保持一致。

以收集kubelet的metrics为例

通过修改Prometheus的配置文件增加收集kubelet的指标数据的功能,在这里我们通过relabel规则设定prometheus通过kubelet监听的只读端口10255收集metrics信息:

  1. - job_name: 'kubelet'
  2. kubernetes_sd_configs:
  3. - role: node
  4. scheme: https
  5. tls_config:
  6. ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
  7. insecure_skip_verify: true
  8. authorization:
  9. credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  10. relabel_configs:
  11. - action: labelmap
  12. regex: __meta_kubernetes_node_label_(.+)
  13. - source_labels: [__address__]
  14. action: replace
  15. target_label: __address__
  16. regex: ([^:;]+):(\d+)
  17. replacement: ${1}:10255
  18. - source_labels: [__scheme__]
  19. action: replace
  20. target_label: __scheme__
  21. regex: https
  22. replacement: http

注意:如果您也使用只读端口10255,请注意配置kubelet开启对10255端口的监听,否则会出现如如图所示错误 system-architecture