kubectl与CRD额外打印列的JSONPath语义差异咨询
kubectl自定义列与CRD额外打印列的JSONPath差异
kubectl命令行自定义列和CRD额外打印列的JSONPath处理逻辑确实存在差异,这就是你遇到内容为空问题的核心原因:
- kubectl命令行场景:由于是在shell环境中执行命令,需要通过单引号包裹+转义点号的方式,避免shell将带点的标签键拆分成多个字段,所以你用
.metadata.labels.'a\.b\.c\.com/key'能正常生效。 - CRD额外列场景:Kubernetes API服务器解析CRD的jsonPath时,遵循标准JSONPath语法,不需要shell层面的转义操作。对于包含点、斜杠这类特殊字符的键,直接使用
['键名']的形式访问即可,不需要转义点号,也不需要额外的单引号包裹。
正确的CRD额外列配置应该是:
- description: Label value jsonPath: .metadata.labels['a.b.c.com/key'] name: LABEL type: string
配置完成后,执行kubectl get mykind就能正常显示该标签的值了。
内容的提问来源于stack exchange,提问作者anekdoti
相关产品推荐
相关产品推荐

