我在kubernetes豆荚里放celery 。找不到服务器:
错误/mainprocess]consumer:无法连接到redis://:**@redis-master:6379/1:错误-3连接到redis-master:6379. 查找超时。。4秒后再试(1/100)
如果我通过“kubectl exec-it”连接到同一个pod并运行命令,我就成功了:
redis cli-uredis://:@redis-master:6379/1键“*”
(空列表或集合)
如何解决此问题?
更新1:dns中存在明显问题:
如果我将主机设置为域名:
export REDIS_HOST=redis-master.dev.svc.cluster.local
celery worker --app src
TIMEOUT
如果我将主机设置为域名:
export REDIS_HOST=10.0.13.13
celery worker --app src
OK
同时:
# dig redis-master.dev.svc.cluster.local
; <<>> DiG 9.11.5-P4-5.1+deb10u1-Debian <<>> redis-master.dev.svc.cluster.local
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49071
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;redis-master.dev.svc.cluster.local. IN A
;; ANSWER SECTION:
redis-master.dev.svc.cluster.local. 30 IN A 10.0.13.13
;; SERVER: 10.0.0.10#53(10.0.0.10)
因此,问题缩小到:为什么celery 不使用dns?
更新2:python库dnspython中的问题。版本2.0.0-解决版本1.16.0中的错误-就像一个魅力
解决方案
管道安装dnspython==1.16.0
1条答案
按热度按时间wfsdck301#
回答我自己:
这是一个dnspython错误。解决方案: