【问题标题】:celery won't connect to rabbitmq broker for kubernetescelery 无法连接到 kubernetes 的 rabbitmq 代理
【发布时间】:2016-08-19 02:22:01
【问题描述】:

我目前正在尝试在 Kubernetes(和 minikube)上使用 celery、rabbitmq 和 Flower 部署一个基本的任务队列和前端。我在这里遵循示例:

https://github.com/kubernetes/kubernetes/tree/release-1.3/examples/celery-rabbitmq

我可以按照说明让一切正常工作;但是,当我在./celery-app-add 中的Dockerfile 上运行docker build 时,将图像推送到我自己的存储库并将endocode/celery-app-add 替换为<mine>/celery-app-add,我无法再运行该示例。我假设源代码管理中的Dockerfile 是错误的,因为如果我拉取endocode/celery-app-add 图像并在图像中运行bash,它将以root 用户的身份加载(而不是user<mine>/celery-app-add@ 987654332@)。

启动所有容器和服务后,我可以在日志中看到以下内容:

2016-08-18T21:05:44.846591547Z AttributeError: 'ChannelPromise' object has no attribute '__value__'

芹菜原木显示:

2016-08-19T01:38:49.933659218Z [2016-08-19 01:38:49,933: ERROR/MainProcess] consumer: Cannot connect to amqp://guest:**@rabbit:5672//: [Errno -2] Name or service not known.

如果我在容器中回显RABBITMQ_SERVICE_SERVICE_HOST,它会在运行kubectl get services 后显示为与rabbitmq-service 中指示的主机相同的主机。

我不确定从这里去哪里。任何建议表示赞赏。另外,我在我的Dockerfile 中添加了USER root(不会在生产中运行它,别担心),但仍然遇到了上述相同的问题。 docker history endocode/celery-app-add 也没有太大帮助。

【问题讨论】:

  • 似乎每当我尝试运行 celery worker 时,配置应用程序都不会被读取,并且 worker 一直尝试连接到 amqp://guest:**@rabbit:5672//: 而不是正确的代理服务主机。

标签: docker rabbitmq celery kubernetes


【解决方案1】:

原来问题是基于这个芹菜issue。 Celery 更喜欢使用CELERY_BROKER_URL,而不是任何可以在应用程序配置中设置的东西。为了解决这个问题,我在Dockerfile 中取消设置CELERY_BROKER_URL,它正确地选择了我的配置。

【讨论】:

  • 我遇到了同样的错误。但是在使用CELERY_BROKER_URL 之后也无法修复它。有什么想法吗?
  • 另外,我也检查了共享链接。我也没有明确地传递它。我该如何调试它?
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2013-04-27
相关资源
最近更新 更多