Не удалось подключиться к rabbitmq из рабочих мест kubernetes cron - PullRequest
0 голосов
/ 26 октября 2018

Я использую rabbitmq на удаленном компьютере (cloudamqp.com) и создаю задание cron в Kubernetes.На моем локальном компьютере моя работа работает нормально, и cronJob Kubernetes отлично работает, но задание перенаправляет URL-адрес соединения rabbitmq на 127.0.0.1:5672, и я получаю сообщение об ошибке.

pika.exceptions.ConnectionClosed: Connection to 127.0.0.1:5672 failed: [Errno 111] Connection refused

Я проверяю журналы задания cronи мой URL-адрес соединения в порядке, но когда pika пытается подключиться к хосту, он автоматически перенаправляет на 127.0.0.1:5672, так как мы знаем, что cron-модуль не работает на каком-либо сервере rabbitmq, поэтому он отклоняет соединение.

CronJob.yml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: scrape-news
spec:
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: scrape-news
        spec:
          containers:
          - name: scrape-news
            image: SCRAPER_IMAGE
            imagePullPolicy: Always
          restartPolicy: Never
  schedule: '* * * * *'
  successfulJobsHistoryLimit: 3

Соединение RabbitMQ

    print(env.RABBIT_URL)
    self.params = pika.URLParameters(env.RABBIT_URL)
    self.connection = pika.BlockingConnection(parameters=self.params)
    self.channel = self.connection.channel() # start a channel

URL-адрес соединения точно такой же и работает на моей локальной установке.

1 Ответ

0 голосов
/ 29 октября 2018

Исходя из вашей CronJob спецификации, вы не передаете переменную окружения RABBIT_URL.

Ваш код выглядит так, как будто он ожидает установки этой переменной, а это не так, и, скорее всего,почему это значение по умолчанию равно localhost.

self.params = pika.URLParameters(env.RABBIT_URL)

Возможно, вы хотите что-то вроде этого:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: scrape-news
spec:
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: scrape-news
        spec:
          containers:
          - name: scrape-news
            image: SCRAPER_IMAGE
            imagePullPolicy: Always
            env:
              - name: RABBIT_URL
                value: cloudamqp.com
          restartPolicy: Never
  schedule: '* * * * *'
  successfulJobsHistoryLimit: 3
...