apiserver 作为 Kubernetes 最核心的组件,当然他的监控也是非常有必要的,对于 apiserver 的监控我们可以直接通过 kubernetes 的 Service 来获取,如下这个 Service 就是k8s集群apiserver 在集群内部的 Service 地址,想要自动发现 Service 类型的服务,需要用到 role 为 Endpoints 的自动发现方式,在 Prometheus配置中添加上一个 Endpoints 类型的服务的监控任务即可:
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 172.20.0.1443/TCP 67d
添加自动发现抓取任务:role 为 Endpoints 的 kubernetes_sd_configs,然后更新配置:
- job_name: "apiservers" kubernetes_sd_configs: - role: endpoints
更新完成后,去查看 Prometheus 的 Dashboard 的 target 页面:
可以看到apiservers下面出现了很多实例,因为这里使用Endpoints服务发现方式,Prometheus把所有的Endpoints服务都抓取过来了,但是我们只需要default这命名空间个下名为kubernetes的Service服务,这里就需要用到relabel_configs 的keep功能,把符合我们要求的给保留下来,可以根据对应的__meta_kubernetes_namespace和__meta_kubernetes_service_name这两个元数据来进行relabel,另外由于kubernetes这个service服务对应的端口是443,所以需要使用https的协议,更改Prometheus配置如下:
- job_name: "apiservers" kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - action: keep source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, ] regex: default;kubernetes
更新配置后,去查看 Prometheus 的 Dashboard 的 target 路径,已成功抓取到指标:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)