kubernetes - 用于 redis 队列工作者的 Kubernetes 活跃度探测
问题描述
我有一个 Kubernetes 集群,其中包含几种不同的 pod 类型。
- 一个 Nginx 前端,
- gunicorn 上的烧瓶后端,
- Redis 和
- Redis 队列 (RQ)。
据我所知,前端和烧瓶后端的默认活性探测就足够了(返回 200 OK,因为我创建了一个返回 200 的“/”后端,并且我的所有任务都应该快速运行)。崩溃检测效果很好。
此外,我有一个设置活动监视器,它使用 Redis-cli 对 Redis 执行 ping 操作。这也运作良好。
但是,我不确定 RQ 的默认配置是否足够好。pod 已经重新启动了几次,并且通常表现良好,但由于我不知道使用的机制,我很担心。
我的问题是:像 RQ 工作人员使用的活性探针是什么,我可以做些什么来确保它是健壮的?
我应该使用Supervisor或systemd之类的东西吗?关于哪一个有什么建议吗?
解决方案
似乎 RQ 在 Redis 中设置了心跳键:https ://github.com/rq/rq/blob/e43bce4467c3e1800d75d9cedf75ab6e7e01fe8c/rq/worker.py#L545-L561
你可以检查这是否以某种方式存在。不过,这可能需要一个 exec 探针,此时我不建议使用 exec 探针,因为 exec 探针有几个未解决的错误,这些错误会导致僵尸进程导致资源使用量随着时间的推移而升级。
推荐阅读
- r - 创建一个持续时间列,其中包含按 ID 分组的日期时间差异
- tsql - 向用户创建的函数添加帮助错误消息
- applescript - 无论收件人的操作系统如何,如何通过 Messages.app 自动发送文本?
- python - python+selenium+phantomjs+proxies 偶尔工作,但大多返回空页面''
- java - 如何使用 Google 地图将缩放控件添加到 Mapwidget?
- c# - 使用 C# HttpClient 在两个请求之间保持 PHP 会话处于活动状态
- android - 尝试在空对象引用上调用虚拟方法 'void android.view.MotionEvent.setLocation(float, float)'
- variables - 具有两个条件读取变量的 For 循环
- python - 在 Pygame 中缩放图像/矩形
- python - 将文件转换为 pandas 数据框并逐行访问元素