V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BrandonXcc
V2EX  ›  Kubernetes

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

  •  1
     
  •   BrandonXcc · 21 天前 · 1432 次点击
    19 条回复    2025-01-07 11:16:59 +08:00
    defunct9
        1
    defunct9  
       21 天前
    发版的时候通知一下不就行了。监听这个干嘛
    qoo2019
        2
    qoo2019  
       21 天前
    你的需求呢,k8s-event 就像,但是没明白这是啥场景会有这种需求?
    263
        3
    263  
       21 天前
    Prometheus + kube-state-metrics
    BrandonXcc
        4
    BrandonXcc  
    OP
       21 天前
    @defunct9 需求是在做私有化部署测试,然后开发会单独更新镜像,我们有镜像已经构建完成的通知。但是是否部署到机器上面了开发不知道,得上机器看,比较浪费时间。 所以就想能不能监听到这变更,然后发送通知给开发,让他们知道镜像更新完成了。
    nieqibest
        5
    nieqibest  
       21 天前
    需求不错,蹲一个
    BrandonXcc
        6
    BrandonXcc  
    OP
       21 天前
    @qoo2019 需求在上面。k8s+event 可以满足这个场景么
    BrandonXcc
        7
    BrandonXcc  
    OP
       21 天前
    @263 这个我们有采集,但是只采集了 pod 是否有重启,没有监听镜像变更
    defunct9
        8
    defunct9  
       21 天前
    event 监听的是变动,改镜像是变动、tag 也是变动、重启也是变动。通知太多了
    anubu
        9
    anubu  
       21 天前
    keel.sh 可以看看,我用这个在 Kubernetes 集群自动更新镜像,有审批和通知功能。
    zhoudaiyu
        10
    zhoudaiyu  
       21 天前
    写个程序:监听 Pod 的父对象的 Update 事件,然后对比当前的镜像和上次生效配置中的镜像是否一样,不一样就发消息
    litchinn
        11
    litchinn  
       21 天前
    我这都是开发盯着 k9s 看部署好没,哈哈
    csys
        12
    csys  
       21 天前 via Android
    k8s event 啊,此外如果你用 deployment ,镜像变更也会产生历史副本,diff 一下就能拿到了
    zhaoyeye
        13
    zhaoyeye  
       20 天前
    你们是怎么发布的?发布平台上应该都可以看到 deployment 的状态啊
    vkillwucy
        14
    vkillwucy  
       20 天前 via Android
    Name:服务更新提醒
    Labels:
    alertname:服务更新提醒
    deployment:data-ingest
    namespace:uat
    severity:info
    Annotations:
    summary:产线 k8s 集群有服务在更新版本,服务名称:data-ingest ,namespace:uat
    基于 prometheus altermange 告警通知到企业微信群
    BrandonXcc
        15
    BrandonXcc  
    OP
       17 天前
    @zhaoyeye 发布系统上只有自动更新的信息,是否更新成功没有展示。
    windcode
        16
    windcode  
       15 天前
    Karpor 会做个功能,欢迎关注: https://github.com/KusionStack/karpor/issues/698
    BrandonXcc
        17
    BrandonXcc  
    OP
       15 天前
    最终还是采用了 alertmanager 的方案, 增加了一个 kube_status_metrics 的 export , 里面有 kube_pod_container_info 这个指标,含有了 image 的信息。 使用 changes(kube_pod_container_info)然后进行告警推送。 但是有一个弊端就是如果有多个 pod 的话,会告警多次,这个还在想办法怎么去重,只要相同的 sts 中,只推送一个信息
    BrandonXcc
        18
    BrandonXcc  
    OP
       15 天前
    @anubu 嗯嗯,也调研过这个开源的控制台,但是我只想要单纯的镜像变更推送。 这个控制台好像只有监听了镜像仓库变更的 trigger ,然后更新了 k8s 的镜像之后才会推送信息,我们已经接入了自动部署平台,现在只想要一个推送方式
    Frankcox
        19
    Frankcox  
       11 天前
    是要在 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 相等时,认为滚动更新结束。这个时候发通知。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:51 · PVG 11:51 · LAX 19:51 · JFK 22:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.