unliar / unliar.github.io

一个已经不再使用的静态博客,新的博客在后边。
https://happysooner.com
0 stars 0 forks source link

监控k8s部署的pod启动和移除 #18

Open unliar opened 3 years ago

unliar commented 3 years ago

网站的系统在 构建、部署、和启动阶段都会有 IM 消息通知, 但是 pod 的移除却没有。而且我的启动消息通知都是在应用代码里,冗余而且不优雅。

我尝试找解决方案,把这些消息通知功能集中到一个专属服务或者迁移到运维层面。

监控服务注册中心

首先想到的就是监控服务注册中心 consul 的服务注册和摘除事件。可是很遗憾,consul 本身并没有提供这个功能,如果非要实现,只能自己去 diff 服务列表的差异勉强实现,而且还存在不准确的问题。

kubernetes lifecycle

经过一番查找, 最终我把目光锁定在 kubernetes 本身。在 kubernetes 启动/移除 pod 时做一个 curl 操作可以完美实现我的需求。

在官方文档里找到 lifecycle 相关的操作文档,我所需要的就是在 postStartpreStop 时执行一个 curl 命令就好。

考虑到某些容器没有 curl 命令,我最终用的是 wget 。

lifecycle:
     postStart:
           exec:
              command:
              - sh
              - "-c"
              - wget --output-document=/dev/null "https://happysooner.com"

完美实现我想要的功能。 image.png

参考资料

kubernetes lifecycle doc

unliar commented 3 years ago

备份地址 https://happysooner.com/post/49