【问题标题】:Inter-pod communication in kubernetesKubernetes 中的 Pod 间通信
【发布时间】:2017-07-04 23:49:32
【问题描述】:

我之前创建了一个包含三个容器的 pod,即 prometheusblackbox-exporterpython-access-apiblackbox-exporter 在端口 9115 上运行并抓取由 python-access-api 容器生成的目标,该容器会在 prometheus 中发出 SSL 到期警报目标证书。现在我想将 blackbox-exporter 移动到不同的 pod。我试图通过 service 建立它,但我现在无法建立 prometheusblackbox-exporter 之间的通信,因为它们位于不同的吊舱。因此,我无法对 SSL 到期证书进行探测,因此无法在 prometheus 上看到警报。下面是我用过的yaml文件,有没有人能指出解决这个问题的方法。请注意,我的配置对于 prometheus 看起来不错,并且 blackbox 和 prometheus 的 pod 单独运行良好。就像我上面说的,我没有看到他们相互交流。

apiVersion: v1
kind: ReplicationController
metadata:
  name: blackbox-deployment
  labels:
    app: prometheus
spec:
  replicas: 1
  selector:
    app: blackbox
  template:
    metadata:
      name: blackbox
      labels:
        app: blackbox
    spec:
      containers:
      - name: blackbox

Prometheus 部署的 Yaml 文件

apiVersion: v1
kind: ReplicationController
metadata:
  name: python-daemon
  labels:
    app: prometheus-python
spec:
  replicas: 1
  selector:
    app: python
  template:
    metadata:
      name: python
      labels:
        app: python
    spec:
      containers:

我已经部署的服务:-

apiVersion: v1
kind: Service
metadata:
  name: prometheus
spec:
  selector:
    app: prometheus
  ports:
  - name: http
    port: 80
    targetPort: 9115
    protocol: TCP

prometheus 配置如下

- job_name: blackbox
  params:
    module:
    - http_2xx
  scrape_interval: 1m
  scrape_timeout: 10s
  metrics_path: /probe
  scheme: http
  file_sd_configs:
  - files:
    - /var/suhas/targets.yml
    refresh_interval: 5m
  relabel_configs:
  - source_labels: [__address__]
    separator: ;
    regex: (.*)
    target_label: __param_target
    replacement: $1
    action: replace
  - source_labels: [__param_target]
    separator: ;
    regex: (.*)
    target_label: instance
    replacement: $1
    action: replace
  - source_labels: []
    separator: ;
    regex: (.*)
    target_label: __address__
    replacement: prometheus:9115
    action: replace

【问题讨论】:

    标签: kubernetes microservices prometheus


    【解决方案1】:

    首先,您需要明确正在进行哪些通信。 prometheus是通过9115端口访问blackbox exporter,还是blackbox exporter通过80端口访问prometheus?根据哪个是正确的,服务会有所不同。

    在上面的服务中,您正在设置端点,当通过端口 80 访问时,它将流量重定向到 blackbox-exporter 应用程序的端口 9115。我将假设 prometheus 正在访问 blackbox-exporter 以获取其余答案。

    prometheus 将通过端口 9115 或端口 80 访问黑盒导出器。在我看来,在您的初始设置中,prometheus 将使用端口 9115 进行访问。因此,没有理由将服务中的端口更改为 80。您可以尝试在服务文件中设置port: 9115 吗?

    另外,请确保您将 prometheus 配置为使用正确的地址。我假设它以前使用 127.0.0.1:9115,现在它需要是 prometheus:9115(正如您将服务命名为 prometheus,这可能会有点混乱)。

    【讨论】:

    • 嗨,澄清一下 - 这是普罗米修斯通过端口 9115 访问黑盒导出器。我已经尝试过你建议的更改,但我再次未能做到这一点。关于将服务更改为 port:9115 ,我也尝试过,但我认为 port:80 也应该没问题,因为它被重定向到 targetport 9090。但是,我必须这样做吗?为黑盒定义另一个服务来访问普罗米修斯(但我认为这不是必需的)。
    • 问题是:prometheus是如何配置来访问这个服务的?设置了哪个 ip 或 dns?
    • 嗨,我已经编辑了这个问题来回答你。另外,你真的是说,我应该将 env 包含在我的 prometheus 的复制控制器 YAML 文件中。据我所知,如果我在我的 prometheus 配置文件中提到 prometheus:9115 ,它应该被解析,因为它在同一个命名空间中。如果我误解了什么,请纠正我。
    • 另外我使用的环境变量是 env: - name: GET_HOSTS_FROM value: env
    • 是的,prometheus:9115 应该被解析,因为它们在同一个命名空间中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2018-02-12
    • 2019-04-02
    • 2018-01-01
    • 2020-01-16
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多