kubectl跨命名空间用jsonpath查询匹配注解的Deployment名称和Namespace
你之前的查询逻辑存在问题:两次独立的过滤查询分别返回了所有符合条件的Deployment名称集合、命名空间集合,两类数据各自拼接后再用逗号分隔,就会出现多值混排的情况。
正确的jsonpath查询语句如下:
kubectl get deploy --all-namespaces -o jsonpath='{range .items[?(@.metadata.annotations.downscaler/uptime=="Mon-Fri 07:00-21:00 Australia/Sydney")]}{.metadata.name}{","}{.metadata.namespace}{"\n"}{end}'
逻辑说明
range 关键字直接遍历所有符合注解条件的Deployment对象,每遍历到一个匹配资源,就单独输出它的名称、分隔逗号、命名空间、换行符,最后用end闭合遍历块,就能保证每个匹配的Deployment单独占一行,完全符合你要求的输出格式。
针对你提供的示例数据,执行上述命令后输出结果为:
anotherapp-v0.1.10,anotherapp
内容的提问来源于stack exchange,提问作者Vineeth Elias
相关产品推荐
相关产品推荐

