我需要找到所有副本仍在启动的 st。为此,我需要根据 2 个条件过滤 sts 项目:
.status.readyReplicas属性readyReplicas属性必须与中的值不同replicas我尝试的结果出现错误:
$ kubectl get sts -o=jsonpath='{range .items[?(@.status.readyReplicas && @.status.readyReplicas!=@.status.replicas)]}{.}{.metadata.name}{"\t"}{.status.readyReplicas}{"/"}{.status.replicas}{"\n"}{end}'
error: error parsing jsonpath {range .items[?(@.status.readyReplicas && @.status.readyReplicas!=@.status.replicas)]}{.}{.metadata.name}{"\t"}{.status.readyReplicas}{"/"}{.status.replicas}{"\n"}{end}, unrecognized character in action: U+0026 '&'
$ kubectl get sts -o=jsonpath='{range .items[?(@.status.readyReplicas AND @.status.readyReplicas!=@.status.replicas)]}{.}{.metadata.name}{"\t"}{.status.readyReplicas}{"/"}{.status.replicas}{"\n"}{end}'
error: error executing jsonpath "{range .items[?(@.status.readyReplicas AND @.status.readyReplicas!=@.status.replicas)]}{.}{.metadata.name}{\"\\t\"}{.status.readyReplicas}{\"/\"}{.status.replicas}{\"\\n\"}{end}": Error executing template: unrecognized identifier AND. Printing more information for debugging the template: ...
Run Code Online (Sandbox Code Playgroud)
使用逗号在数组上的 JsonPath AND 运算符上建议的解决方案也不起作用:
$ k get sts -o=jsonpath='{range .items[?(@.status.readyReplicas), ?(@.status.readyReplicas!=@.status.replicas)]}{.}{.metadata.name}{"\t"}{.status.readyReplicas}{"/"}{.status.replicas}{"\n"}{end}'
error: error …Run Code Online (Sandbox Code Playgroud) 我遇到过| xargs不带任何参数执行的脚本。我开始删除此类事件,因为脚本在没有它们的情况下也可以工作,但想验证我没有遗漏某些内容。也许 xargs 默认会清理某些字符等。
... | cut -d: -f2- | xargs
Run Code Online (Sandbox Code Playgroud)
有了以上这些还有什么意义吗| xargs?提前致谢。