我想列出所有处于就绪状态的节点,除了那些有任何污染的节点。如何使用 jsonpath 实现这一点?
我尝试了以下取自 k8s doc 的语句,但它没有打印出我想要的内容。我正在寻找诸如 -- 之类的输出 node01 node02。输出中没有主节点,因为它有污点。什么样的污点在这里并不重要。
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' \
&& kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"
Run Code Online (Sandbox Code Playgroud)
我已经成功上市,我的节点是ready和not tainted使用jq。
在这里,您拥有所有节点:
$ kubectl get nodes
gke-standard-cluster-1-default-pool-9c101360-9lvw Ready <none> 31s v1.13.11-gke.9
gke-standard-cluster-1-default-pool-9c101360-fdhr Ready <none> 30s v1.13.11-gke.9
gke-standard-cluster-1-default-pool-9c101360-gq9c Ready <none> 31s v1.13.11-gke.
Run Code Online (Sandbox Code Playgroud)
这里我污染了一个节点:
$ kubectl taint node gke-standard-cluster-1-default-pool-9c101360-9lvw key=value:NoSchedule
node/gke-standard-cluster-1-default-pool-9c101360-9lvw tainted
Run Code Online (Sandbox Code Playgroud)
最后是一个列出not tainted和ready节点的命令:
$ kubectl get nodes -o json | jq -r '.items[] | select(.spec.taints|not) | select(.status.conditions[].reason=="KubeletReady" and .status.conditions[].status=="True") | .metadata.name'
gke-standard-cluster-1-default-pool-9c101360-fdhr
gke-standard-cluster-1-default-pool-9c101360-gq9c
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
825 次 |
| 最近记录: |