无法从kubernetes cron作业连接Rabbitmq

时间:2018-10-26 14:14:25

标签: kubernetes rabbitmq cloudamqp

我正在远程(cloudamqp.com)上使用Rabbitmq,并在Kubernetes上创建了cron作业。在我的本地计算机上,我的工作正常,并且Kubernetes cronJob调度得很好,但是Job将Rabbitmq连接URL重定向到pika.exceptions.ConnectionClosed: Connection to 127.0.0.1:5672 failed: [Errno 111] Connection refused ,但出现错误。

127.0.0.1:5672

我检查了cron作业的日志,并且我的连接URL很好,但是当pika尝试连接到主机时,它会自动重定向到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 ,因为我们知道cron pod没有运行任何Rabbitmq服务器,因此它拒绝连接。

CronJob.yml

    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

RabbitMQ连接

reduce

连接URL完全相同,并且可以在我的本地设置上使用。

1 个答案:

答案 0 :(得分:1)

根据您的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