用于 Redis 队列工作人员的 Kubernetes 活跃度探针

标签 kubernetes redis google-kubernetes-engine

我有一个带有几种不同 pod 类型的 kubernetes 集群。

  • Nginx 前端,
  • gunicorn 上的 flask 后端,
  • Redis,以及
  • Redis 队列 (RQ)。

据我所知,前端的默认 active 探测和 Flask 后端就足够了(返回 200 OK,因为我创建了一个返回 200 的“/”后端,并且我的所有任务都应该快速运行)。碰撞检测效果很好。

此外,我还设置了一个事件监视器,可以使用 Redis-cli 对 Redis 进行 ping 操作。这也运作良好。

但是,我不确定 RQ 的默认配置是否足够好。该 Pod 已自行重新启动了几次,并且通常表现良好,但由于我不知道所使用的机制,所以我很担心。

我的问题是:RQ 工作人员使用的 active 探针是什么?我可以采取哪些措施来确保它的稳健性?

我应该使用 Supervisor 或 systemd 之类的东西吗?对哪一个有什么建议吗?

最佳答案

看来RQ在Redis中设置了一个心跳 key :https://github.com/rq/rq/blob/e43bce4467c3e1800d75d9cedf75ab6e7e01fe8c/rq/worker.py#L545-L561

你可以检查一下这是否存在。不过,这可能需要一个 exec 探针,目前我不建议这样做,因为 exec 探针有几个 Unresolved 错误,这些错误会导致僵尸进程,从而导致资源使用随着时间的推移而不断增加。

关于用于 Redis 队列工作人员的 Kubernetes 活跃度探针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260366/

相关文章:

kubernetes - 如何向通过 Helm 安装的nginx-ingress添加静态IP

amazon-web-services - 加载命名空间时出错。未授权 : Verify you have access to the Kubernetes cluster

Redis TTL 与 "allkeys-lru"驱逐政策

node.js - NodeJS + Cluster + Socket.IO 如何正确创建游戏房间?

kubernetes - 在 GKE 上更改 kubernetes 主环境变量

docker - minikube docker-env 是什么意思?

ruby-on-rails - 动态计划在 resque fork 新流程时丢失

ssl - GKE、NGINX 入口、HTTPS 和证书

google-kubernetes-engine - 基于 terraform 的服务帐户在 gcr.io 上的 GKE 权限问题

kubernetes - 无法在指定的命名空间上安装 kubernetes 图表