各位大佬,想问问,在 k8s 集群里面如何监听一个 pod 的镜像变更。然后发送一个通知到群里,这个有组件可以做到么,感谢🙏

66 天前
BrandonXcc  BrandonXcc
1791 次点击
所在节点   Kubernetes  Kubernetes
19 条回复
defunct9
defunct9
66 天前
发版的时候通知一下不就行了。监听这个干嘛
qoo2019
qoo2019
66 天前
你的需求呢,k8s-event 就像,但是没明白这是啥场景会有这种需求?
263
263
66 天前
Prometheus + kube-state-metrics
BrandonXcc
BrandonXcc
66 天前
@defunct9 需求是在做私有化部署测试,然后开发会单独更新镜像,我们有镜像已经构建完成的通知。但是是否部署到机器上面了开发不知道,得上机器看,比较浪费时间。 所以就想能不能监听到这变更,然后发送通知给开发,让他们知道镜像更新完成了。
nieqibest
nieqibest
66 天前
需求不错,蹲一个
BrandonXcc
BrandonXcc
66 天前
@qoo2019 需求在上面。k8s+event 可以满足这个场景么
BrandonXcc
BrandonXcc
66 天前
@263 这个我们有采集,但是只采集了 pod 是否有重启,没有监听镜像变更
defunct9
defunct9
66 天前
event 监听的是变动,改镜像是变动、tag 也是变动、重启也是变动。通知太多了
anubu
anubu
66 天前
keel.sh 可以看看,我用这个在 Kubernetes 集群自动更新镜像,有审批和通知功能。
zhoudaiyu
zhoudaiyu
66 天前
写个程序:监听 Pod 的父对象的 Update 事件,然后对比当前的镜像和上次生效配置中的镜像是否一样,不一样就发消息
litchinn
litchinn
66 天前
我这都是开发盯着 k9s 看部署好没,哈哈
csys
csys
66 天前
k8s event 啊,此外如果你用 deployment ,镜像变更也会产生历史副本,diff 一下就能拿到了
zhaoyeye
zhaoyeye
65 天前
你们是怎么发布的?发布平台上应该都可以看到 deployment 的状态啊
vkillwucy
vkillwucy
65 天前
Name:服务更新提醒
Labels:
alertname:服务更新提醒
deployment:data-ingest
namespace:uat
severity:info
Annotations:
summary:产线 k8s 集群有服务在更新版本,服务名称:data-ingest ,namespace:uat
基于 prometheus altermange 告警通知到企业微信群
BrandonXcc
BrandonXcc
62 天前
@zhaoyeye 发布系统上只有自动更新的信息,是否更新成功没有展示。
windcode
windcode
60 天前
Karpor 会做个功能,欢迎关注: https://github.com/KusionStack/karpor/issues/698
BrandonXcc
BrandonXcc
60 天前
最终还是采用了 alertmanager 的方案, 增加了一个 kube_status_metrics 的 export , 里面有 kube_pod_container_info 这个指标,含有了 image 的信息。 使用 changes(kube_pod_container_info)然后进行告警推送。 但是有一个弊端就是如果有多个 pod 的话,会告警多次,这个还在想办法怎么去重,只要相同的 sts 中,只推送一个信息
BrandonXcc
BrandonXcc
60 天前
@anubu 嗯嗯,也调研过这个开源的控制台,但是我只想要单纯的镜像变更推送。 这个控制台好像只有监听了镜像仓库变更的 trigger ,然后更新了 k8s 的镜像之后才会推送信息,我们已经接入了自动部署平台,现在只想要一个推送方式
Frankcox
Frankcox
55 天前
是要在 Deployment Pod 的 image 触发 update ,有 image 变化刚刚开始时发通知,还是 Deployment Pod 的 image 更新完毕后发通知?

如果是前者那比较简单,可以自己写个 Admission Controller ,有 Deployment update 操作时,查找当前集群的对应的 Deployment ,比较前后 Image ,有变化就通知。

如果是后者那比较麻烦,我之前写过一个 Deployment 滚动更新自动暂停控制器,其中就是需要 watch Deployment 的滚动更新情况。你可以先 watch Deployment 的 Update 事件,然后每次 watch 的时候根据 Deployment 去找对应的 replicaSet ,在通过比较新老 replicaSet 判断是否触发滚动更新,然后再 watch ReplicaSet ,当其 Status 的 Replicas 和 Spec 的 Replicas 相等时,认为滚动更新结束。这个时候发通知。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1100776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX