kubernetes 如何在kubectl get nodes的输出中排除污点节点?

vlf7wbxs  于 2023-11-17  发布在  Kubernetes
关注(0)|答案(5)|浏览(156)

我尝试检查多少节点已就绪(不包括受污染的节点NoSchedule),并将数量写入文本文件output.txt
你能给我给予吗?

nwlls2ji

nwlls2ji1#

我相信kubectl get nodes不会显示污点,所以你不能只使用grep进行过滤。在这种情况下,你可以将输出设置为json并使用jq(或yaml并使用yq)来处理它:

kubectl get nodes -o json | jq -c '.items[].spec.taints' | grep -v NoSchedule | wc -l > output.txt

字符串
jq中的-c选项是在单行中输出每个元素,而不是漂亮地打印它,以防你有多个污点。其余的已经在Abdennour TOUMI的回答中解释过了

zc0qhyus

zc0qhyus2#

kubectl get nodes | grep Ready | grep -v NotReady | grep -v NoSchedule \
  | wc -l  > output.txt

字符串
这个命令将为您完成这项工作:
备注:

  • grep包括行,而grep -v不包括行
  • wc -l计算行数。
  • 输出的行数与您描述的条件的节点数相同
vmjh9lq9

vmjh9lq93#

完全证明查询以获取节点,但节点对其具有污点效应NoSchedule

kubectl get node -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.taints[*].effect}{"\n"}{end}' | grep -v NoSchedule | wc -l

字符串

ojsjcaue

ojsjcaue4#

下面的命令可以在没有jq或没有安装jq的情况下使用。

kubectl get nodes --selector='!node-role.kubernetes.io/master' --no-headers | grep -v SchedulingDisabled | wc -l > output.txt

字符串

ecfsfe2w

ecfsfe2w5#

一个衬里

kubectl describe nodes | grep -i taint | grep -v NoSchedule | wc -l

字符串

相关问题