如何在KubeRay Head Service注解中配置暴露Prometheus指标?
如何通过Kubernetes Service注解实现Prometheus监控KubeRay部署的Ray集群?
问题背景
我使用KubeRay在Kubernetes上部署了Ray集群,希望通过Prometheus监控集群指标。根据Ray官方文档,Head节点会生成服务发现文件/tmp/ray/prom_metrics_service_discovery.json,可以通过以下Prometheus配置实现自动抓取:
# Prometheus config file # my global config global: scrape_interval: 2s evaluation_interval: 2s # Scrape from Ray. scrape_configs: - job_name: 'ray' file_sd_configs: - files: - '/tmp/ray/prom_metrics_service_discovery.json'
但基于Kubernetes使用经验,我更倾向于通过Service注解的方式配置Prometheus自动抓取Ray指标,示例格式如下:
apiVersion: v1 kind: Service metadata: name: xxx annotations: prometheus.io/scrape: "true" prometheus.io/path: /metrics prometheus.io/port: "8081"
请问有没有办法实现这种方式?
已解决方案(更新于2022-11-10)
通过手动创建Kubernetes Service即可实现该需求,配置模板如下:
apiVersion: v1 kind: Service metadata: # labels: # app.kubernetes.io/name: kuberay-metrics # ray.io/cluster: {{ include "ray-cluster.fullname" . }} name: {{ include "ray-cluster.fullname" . }}-metrics-svc annotations: {{- if .Values.prometheus.enable }} prometheus.io/scrape: "{{.Values.prometheus.enable }}" prometheus.io/path: /metrics prometheus.io/port: "8080" {{- end }} spec: ports: - name: metrics port: 8080 protocol: TCP targetPort: 8080 selector: app.kubernetes.io/name: kuberay ray.io/cluster: {{ include "ray-cluster.fullname" . }} type: ClusterIP
配置说明
- 该Service通过标签选择器
app.kubernetes.io/name: kuberay和ray.io/cluster: <集群全名>匹配Ray集群的Head节点及Worker节点 - 通过
prometheus.io/*注解告知Prometheus开启指标抓取,指定抓取路径为/metrics,端口为8080(Ray默认的metrics端口) - 配置支持通过Helm的
Values.prometheus.enable参数控制是否开启监控抓取
内容的提问来源于stack exchange,提问作者kk17
相关产品推荐
相关产品推荐

