我已经部署了pagerbot https://github.com/stripe-contrib/pagerbot到我们的内部K8S群集作为学习机会。我很开心地为此写一个舵图!
机器人似乎在未知时间与Slack断开,并且永远不会重新连接。我杀死了POD,部署重新创建它,然后再次连接(我们使用Slack RTM选项(。
POD断开连接时将记录以下条目:
2018-02-24 02:31:14.382590 I [9:34765020] PagerBot::SlackRTMAdapter -- Closed connection to chat. --
我想学习一种监视此日志条目并采取行动的方法。最初,我认为LIVISE探测器是使用命令记录时返回非零的命令的方法。但是日志并未内部存储在容器中(我可以看到(。
如何根据可以使用kubectl logs pod-name
看到的日志监视和采取操作?
我可以在我们的Prometheus测试部署中实现这一目标吗?我应该使用已知的K8s功能吗?
我会争辩说最佳行动方案是将pagerbot扩展到表面,而不仅仅是字符串在其/ping端点中的字符串 pong
,然后将其用作其用作其livelinessProbe
,紧随其后的是要教东西要重新连接,因为这几乎肯定比拆除Pod
说过,您可能会考虑的一种方法是使用POD的服务帐户凭据来监视同胞容器(类似于if kubectl logs -f -c pagerbot $my_pod_name | grep "Closed connection to chat"; then kill -9 $pagerbot_pid; fi
类型交易(。这有点尴尬,但是我无法立即想到为什么它不起作用
我最终降落在" livese探测器"上以解决我的问题。我已将以下内容添加到PageyBot部署的部署中:
livenessProbe:
exec:
command:
- bash
- -c
- "ss -an | grep -q 'EST.*:443 *$'"
initialDelaySeconds: 120
periodSeconds: 60
基本上测试以查看是否建立了443的连接,我们注意到机器人断开时会消失。