如何在监视模式下将 jq 过滤器应用于 kubectl 输出?

grd*_*rdl 6 jq kubernetes kubectl

我想过滤在 modekubectl下运行的命令的输出--watch,以密切关注某个 k8s 注释的更改。我正在使用以下命令:

kubectl get pod my-pod --watch -o json | jq '.metadata.annotations["my-annotation"]'

问题是 - 在我停止命令之前不会打印任何内容。我希望jq处理输入并在my-pod发生更改时打印它。

我尝试使用该--unbuffered标志,但没有解决问题。

Web*_*ber 1

所以我测试了你的命令,它运行得很好。但是,您在命令末尾缺少引号。

kubectl get pod nginx-5dfd5597bb-tp8h7 --watch -o json | jq '.metadata.name'
Run Code Online (Sandbox Code Playgroud)

给我

"nginx-5dfd5597bb-tp8h7"
Run Code Online (Sandbox Code Playgroud)

如果您可以使用此命令但不能使用您自己的命令;它可能与括号和引号或缺少对象键有关。