【发布时间】:2021-09-22 13:14:15
【问题描述】:
我正在开发一个使用 rq-workers 的微服务架构项目。我已经使用 docker-compose 文件成功启动并将 rq-worker 与 redis 连接,但我不确定如何在 kubernetes 中复制它。无论我使用 command 和 args 进行什么尝试,都会抛出 Crashloopbackoff 状态。请指导我了解我所缺少的内容。以下是我的 docker-compose 和 rq-worker 部署文件。
rq-worker 和 redis 容器配置:
...
rq-worker:
build: ./simba-app
command: rq worker --url redis://redis:6379 queue
depends_on:
- redis
volumes:
- sharedvolume:/simba-app/app/docs
redis:
image: redis:4.0.6-alpine
ports:
- "6379:6379"
volumes:
- ./redis:/data
...
rq-worker.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: rq-worker
labels:
app: rq-worker
spec:
selector:
matchLabels:
app: rq-worker
template:
metadata:
labels:
app: rq-worker
spec:
containers:
- name: rq-worker
image: some-image
command: ["/bin/sh", "-c"]
#command: ["rqworker", "--url", "redis://redis:6379", "queue"]
args:
- rqworker
- --url
- redis://redis:6379
- queue
imagePullSecrets:
- name: regcred
---
提前致谢!
编辑: 我使用 kubectl logs 查看了日志,发现了以下日志:
Error 99 connecting to localhost:6379. Cannot assign requested address.
首先,我在我的代码中使用“服务名称”而不是“本地主机”来连接 rq 和 redis。不知道为什么我在日志中看到“localhost”。 (注:redis 的 kubernetes 服务名称和我的 docker-compose 文件中使用的相同)
redis-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:4.0.6-alpine
ports:
- containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
type: ClusterIP
selector:
app: redis
ports:
- port: 6379
targetPort: 6379
【问题讨论】:
标签: docker kubernetes