如何从kubernetes中的python flask 应用连接到service/prometheus操作

7gcisfzg  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(1)|浏览(131)

我的Kuberetes上有一个Prometheus,由Prometheus提供服务

NAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)       AGE
prometheus-operated        ClusterIP   None             <none>        9090/TCP      13d

和flask应用程序部署

NAME                         READY   STATUS    RESTARTS   AGE
flask-app-7d59898b78-2j59f   1/1     Running   0          23m

我想通过发送get请求从我的应用程序连接到prometheus-operated

URL = "http://localhost:9090/api/v1/query_range"
PROMQL = ...
r1 = requests.get(url=URL, params=PROMQL)

但我收到“连接被拒绝”错误

ConnectionError: HTTPConnectionPool(host='localhost', port=9090): Max retries exceeded with url: /api/v1/query_range?query= <<<my long query here>>>  (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fbbc01b6d60>: Failed to establish a new connection: [Errno 111] Connection refused'))

当我在kubernetes之外运行我的 flask 应用程序时,连接工作正常。连接到prometheus操作的正确URL是什么?

xmd2e60i

xmd2e60i1#

如果Prometheus和您的flask应用部署在同一命名空间中,您可以使用服务名称prometheus-operated连接到它。

URL = "http://prometheus-operated:9090/api/v1/query_range"

或者在不同命名空间的情况下,假设您没有网络策略,并且您的集群部署了Kube DNS:Kube-DNS命名约定为service.namespace.svc.cluster-domain.tld,默认群集域为cluster.local
例如,如果要从任何名称空间联系db名称空间中名为mysql的服务,只需与mysql.db.svc.cluster.local对话即可。
因此:

URL = "http://prometheus-operated.$PROM_NAMESPACE.svc.cluster.local:9090/api/v1/query_range"

相关问题