You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选运行proxyv2:old-version sidecar的Kubernetes Pod

用jq筛选运行指定版本Istio Sidecar的Pod名称

给定如下Pod列表JSON结构:

{
    "items": [
        {
            "metadata": {
                "name": "app"
            },
            "spec": {
                "containers": [
                    {
                        "image": "some-registry/istio/proxyv2:new-version",
                        "name": "istio-proxy"
                    },
                    {
                        "image": "some-registry/app/app:latest",
                        "name": "app"
                    }
                ]
            }
        },
        {
            "metadata": {
                "name": "another-app"
            },
            "spec": {
                "containers": [
                    {
                        "image": "some-registry/istio/proxyv2:old-version",
                        "name": "istio-proxy"
                    },
                    {
                        "image": "some-registry/another-app/another-app:latest",
                        "name": "another-app"
                    }
                ]
            }
        },
        {
            "metadata": {
                "name": "no-sidecar-app"
            },
            "spec": {
                "containers": [
                    {
                        "image": "some-registry/no-sidecar-app/no-sidecar-app:latest",
                        "name": "no-sidecar-app"
                    }
                ]
            }
        }
    ]
}

需要筛选出运行proxyv2:old-version Sidecar的Pod名称。

问题分析

你之前的筛选逻辑错误在于:遍历容器数组时,每个容器都会触发一次select判断,导致同一个Pod被多次匹配或逻辑冲突。比如你尝试的语句会因为Pod内存在其他非目标版本的容器,导致错误保留不符合要求的Pod。

正确的jq查询语句

直接针对每个Pod,判断其容器列表中是否存在符合条件的Sidecar容器,然后提取Pod名称:

.items[] | select(.spec.containers[] | .image == "some-registry/istio/proxyv2:old-version") | .metadata.name

如果需要用正则匹配(比如版本号格式不固定),可以换成:

.items[] | select(.spec.containers[] | .image | test("some-registry/istio/proxyv2:old-version$")) | .metadata.name

运行结果

执行上述语句后,会输出符合要求的Pod名称:

another-app

内容的提问来源于stack exchange,提问作者micxer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:28:11