【问题标题】:Kubernetes liveness probes for redis queue workers用于 redis 队列工作者的 Kubernetes 活跃度探测
【发布时间】:2020-02-04 04:57:54
【问题描述】:

我有一个 Kubernetes 集群,其中包含几种不同的 pod 类型。

  • 一个 Nginx 前端,
  • gunicorn 上的烧瓶后端,
  • Redis 和
  • 一个 Redis 队列 (RQ)。

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

此外,我有一个设置活动监视器,它使用 Redis-cli 对 Redis 执行 ping 操作。这也运作良好。

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

我的问题是:像 RQ 工作者使用的活性探针是什么?我可以做些什么来确保它的健壮性?

我应该使用像 Supervisor 还是 systemd 这样的东西?有什么推荐的吗?

【问题讨论】:

  • TCP 探测应该最适合 RQ

标签: kubernetes redis google-kubernetes-engine


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    从稳定的redis helm图表来看, https://github.com/helm/charts/blob/master/stable/redis/templates/health-configmap.yaml

    Bitnami 在 helm 图表中添加了对 redis 的健康检查。它只是使用 redis-cli ping 集群。这种机制似乎做得很好,可以包含在官方清单中。

    【讨论】:

    • 我可以做redis健康检查,你在这里建议的正是我使用的。=。我的问题是关于 RQ(redis 队列)。 python-rq.org
    猜你喜欢
    • 2020-09-12
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2019-04-21
    • 2021-01-28
    • 2018-05-31
    • 2016-11-26
    • 2021-01-09
    相关资源
    最近更新 更多