«Соединение: Соединение отклонено» при подключении Прометея к Kubernetes - PullRequest
0 голосов
/ 19 сентября 2018

Я новичок в Prometheus и относительно новичок в kubernetes, так что терпите меня, пожалуйста.Я пытаюсь протестировать Прометея и попробовал два разных подхода.

  1. Запустите Prometheus в качестве док-контейнера за пределами kubernetes.Для этого я создал этот Dockerfile:

    FROM prom/prometheus
    ADD prometheus.yml /etc/prometheus/
    

    и этот файл yaml:

    global:
      scrape_interval: 15s
      external_labels:
        monitor: 'codelab-monitor'
    scrape_configs:
    - job_name: 'kubernetes-apiservers'
      scheme: http
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      kubernetes_sd_configs:
      - role: endpoints
        api_server: localhost:443
    

    Когда я запускаю это, я получаю:

    Failed to list *v1.Pod: Get http://localhost:443/api/v1/pods?limit=500&resourceVersion=0: dial tcp 127.0.0.1:443: connect: connection refused"
    Failed to list *v1.Service: Get http://localhost:443/api/v1/pods?limit=500&resourceVersion=0: dial tcp 127.0.0.1:443: connect: connection refused"
    Failed to list *v1.Endpoints: Get http://localhost:443/api/v1/pods?limit=500&resourceVersion=0: dial tcp 127.0.0.1:443: connect: connection refused"
    

    напетля.Prometheus будет загружаться, когда я перехожу на localhost: 9090, но данных нет.

  2. Я думал, что развертывание Prometheus в качестве развертывания в Kubernetes может помочь, поэтому я сделал это yaml и развернул его.

    kind: Deployment
    apiVersion: extensions/v1beta1
    metadata:
      name: prometheus-monitor
    spec:
      selector:
        matchLabels:
          app: prometheus
      template:
        metadata:
          labels:
            app: prometheus
        spec:
          containers:
          - name: prometheus-monitor
            image: prom/prometheus
            # args:
            #   - '-config.file=/etc/prometheus/prometheus.yaml'
            imagePullPolicy: IfNotPresent
            ports:
            - name: webui
              containerPort: 9090
    

    Развертывание прошло успешно, но если я перехожу на localhost: 9090, я получаю 'ERR_SOCKET_NOT_CONNECTED'.(мой порт переадресован)

Может кто-нибудь сказать мне преимущество по сравнению с Kubernetes и как исправить хотя бы одну из этих проблем?

Кроме того, мойФайл конфигурации подавлен, потому что он выдавал ошибку, и я посмотрю на нее, как только смогу загрузить Prometheus.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Итак, 2 разных вопроса.Вкл .:

  1. Вы пытаетесь подключиться к localhost:443, где работает Прометей, и он ожидает соединения с сервером API Kubernetes.Видимо, на localhost ничего не слушается: 443.Вы делаете переадресацию портов на свой kube-apiserver?

  2. В этом случае вам необходимо выставить порт развертывания.С чем-то вроде:

     kubectl expose deployment prmetheus-web --type=LoadBalancer # or 
     kubectl expose deployment prmetheus-web --type=NodePort
    

    в зависимости от того, как вы хотите представить свой сервис.NodePort предоставляет его в службе, которая сопоставляется с портом на ваших узлах Kubernetes (IPAddress: Port), а LoadBalancer предоставляет развертывание с использованием внешнего балансировщика нагрузки, который может варьироваться в зависимости от того, какое облако вы используете (AWS, GCP, OpenStack, Azure и т. Д.),Подробнее о раскрытии ваших развертываний, DaemonSets или StatefulSets здесь .Подробнее об услугах здесь

Надеюсь, это поможет.

0 голосов
/ 20 сентября 2018

Kubernetes не отображает порт вне кластера при развертывании контейнера.

Вам также необходимо создать службу (может быть внутри того же файла), чтобы сделать ее доступной на вашей рабочей станции (добавьте это кваш прометей (yaml):

---
apiVersion: v1
kind: Service
metadata:
    name: prometheus-web
    labels:
        app: prometheus
spec:
    type: NodePort
    ports:
        - port: 9090
          protocol: TCP
          targetPort: 9090
          nodePort: 30090
          name: webui
    selector:
        app: prometheus

NodePort открывает данный порт на всех ваших узлах.Вы должны увидеть внешний интерфейс с http://localhost:30090/

По умолчанию, kubernetes разрешает порты от 30000 до 32767 для типа NodePort (https://kubernetes.io/docs/concepts/services-networking/service/#nodeport).

. Для получения дополнительной информации, пожалуйста, прочтите документацию в целом.на услуги в Куберне: https://kubernetes.io/docs/concepts/services-networking/service/

...