Kubernetes 无法应用此选项!使用JSONPath查询获取无污染节点的not运算符

Kubernetes 无法应用此选项!使用JSONPath查询获取无污染节点的not运算符,kubernetes,jsonpath,json-path-expression,Kubernetes,Jsonpath,Json Path Expression,我正试图根据一些条件(例如,是否存在污染)获取Kubernetes群集节点的列表。我有3个节点集群(1个主节点和2个工作节点)。我需要得到2个工作节点的名称,因为污染在主节点上。我被困在这里,因为我得到了相反的结果,即能够获得带有污染(主)的节点。请帮忙帮我把!运算符,这样我只能得到没有任何污染的节点 这是我到目前为止的JSONPath查询:- vagrant@mykubemaster:~$ kubectl get nodes NAME STATUS ROLES

我正试图根据一些条件(例如,是否存在污染)获取Kubernetes群集节点的列表。我有3个节点集群(1个主节点和2个工作节点)。我需要得到2个工作节点的名称,因为污染在主节点上。我被困在这里,因为我得到了相反的结果,即能够获得带有污染(主)的节点。请帮忙帮我把!运算符,这样我只能得到没有任何污染的节点

这是我到目前为止的JSONPath查询:-

vagrant@mykubemaster:~$ kubectl get nodes
NAME           STATUS   ROLES                  AGE   VERSION
mykubemaster   Ready    control-plane,master   12d   v1.20.1
mykubenode01   Ready    <none>                 12d   v1.20.1
mykubenode02   Ready    <none>                 12d   v1.20.1
vagrant@mykubemaster:~$ kubectl get nodes -o=jsonpath='{$.items[?(@.spec.taints)].metadata.name}'
mykubemastervagrant@mykubemaster:~$
vagrant@mykubemaster:~$kubectl获取节点
姓名状态角色年龄版本
mykubemaster就绪控制平面,master 12d v1.20.1
mykubenode01 Ready 12d v1.20.1
mykubenode02 Ready 12d v1.20.1
vagrant@mykubemaster:~$kubectl get nodes-o=jsonpath='{$.items[?(@.spec.taints)].metadata.name}'
mykubemastervagrant@mykubemaster:~$

Kubernetes/kubectl正在使用(遗憾的是)不支持带否定的路径筛选器表达式的;事实上,许多实现不支持以下语法:

$[?(!(@.key==42))]
见下文:

  • &

JSON路径中未指定测试是否缺少属性。Kubernetes可能会对它有一些支持,所以我将把它留给那些专家。你可能会感兴趣。有一种非常丰富的表达语言可供你使用;你考虑过用这个吗?