【问题标题】:kubectl get pods JSONPATH failed to do a pattern matchkubectl get pods JSONPATH 无法进行模式匹配
【发布时间】:2022-01-12 03:11:40
【问题描述】:

我正在尝试使用 JSONPATH 查询来检索 pod,该查询将名称与下面指定的特定模式匹配匹配,我得到了如图所示的错误。任何原因导致失败的原因是什么。

kubectl get po -n sdfd -o jsonpath='{.items[?(@.metadata.generateName =~ /abc.*?/i)].status.podIP}'
error: error parsing jsonpath {.items[?(@.metadata.generateName =~ /abc.*?/i)].status.podIP}, unrecognized character in action: U+007E '~'

请找到如下所示的kubectl cli版本:-

kubectl version                                                  
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T21:54:15Z", GoVersion:"go1.15", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.9", GitCommit:"454b5b515582f8ac8419435dc9c230fc97fb844b", GitTreeState:"clean", BuildDate:"2021-11-01T19:59:05Z", GoVersion:"go1.15.14", Compiler:"gc", Platform:"linux/amd64"}

【问题讨论】:

标签: kubernetes kubectl jsonpath


【解决方案1】:

根据documentation

不支持 JSONPath 正则表达式。如果要使用正则表达式进行匹配,可以使用jq等工具。

运行以下命令即可达到预期效果:

kubectl get pods -o json | jq -r '.items[] | select(.metadata.name | test("test-")).spec.containers[].image'

有关更多信息,请参阅此 Github issuestackpost

【讨论】:

    【解决方案2】:

    jsonpath 不支持正则表达式。这是关于此事的github issue。您可以使用jq 使用正则表达式处理输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-10
      • 2021-11-05
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-09-15
      相关资源
      最近更新 更多