【问题标题】:Unable to apply the ! not operator with JSONPath query to get nodes without taints无法申请!使用 JSONPath 查询的 not 运算符来获取没有污点的节点
【发布时间】:2021-01-10 14:36:20
【问题描述】:

我正在尝试根据某些条件(即 Taint 是否存在)获取我的 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:~$

【问题讨论】:

标签: kubernetes jsonpath json-path-expression


【解决方案1】:

Kubernetes/kubectl 正在使用 Go JSONPath implementation (遗憾的是)不支持带有否定的路径过滤器表达式;事实上,许多实现不支持如下语法:

$[?(!(@.key==42))]

看到这个广泛的comparisons

【讨论】:

    猜你喜欢
    • 2012-05-15
    • 2017-06-12
    • 1970-01-01
    • 2010-10-14
    • 2012-10-04
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多