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

使用jq筛选包含指定IP段的Kubernetes NetworkPolicy资源名称

问题原因

你遇到的Cannot iterate over null报错是因为部分NetworkPolicy资源不存在spec.egress字段,或某条egress规则下没有to字段,直接遍历空值会触发jq的迭代错误。你之前的第二种写法虽然能遍历所有数组元素,但没有处理空值场景,第一种写法只取数组首位元素会漏匹配。

正确处理命令
kubectl get netpol -o json | jq -r '.items[] | select(any(.spec.egress[]?; any(.to[]?; .ipBlock.cidr == "1.2.3.4/32"))) | .metadata.name'
逻辑说明
  • []?是jq的可选迭代器,遇到空值时会直接跳过不会抛出错误
  • 两层any()嵌套:第一层遍历当前NetworkPolicy的所有egress规则,第二层遍历单条egress规则的所有出口目标,只要任意一个目标的CIDR和你指定的地址匹配,就会选中该NetworkPolicy,输出它的名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:21:03