Kubernetes 如何在kubectl get nodes中从输出中排除污染节点?

Kubernetes 如何在kubectl get nodes中从输出中排除污染节点?,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,我尝试检查有多少个节点已准备就绪(不包括受污染的NoSchedule)并将编号写入文本文件output.txt 你能给我一些建议吗 kubectl get nodes | grep Ready | grep -v NotReady | grep -v NoSchedule \ | wc -l > output.txt 此命令将为您完成以下任务: 注: 当grep包括行时,grep-v排除行 wc-l计算行数 输出的行数与您描述的条件的节点数相同 此命令将为您完成以下任务: 注:

我尝试检查有多少个节点已准备就绪(不包括受污染的NoSchedule)并将编号写入文本文件output.txt

你能给我一些建议吗

kubectl get nodes | grep Ready | grep -v NotReady | grep -v NoSchedule \
  | wc -l  > output.txt
此命令将为您完成以下任务:

注:

  • grep
    包括行时,
    grep-v
    排除行
  • wc-l
    计算行数
  • 输出的行数与您描述的条件的节点数相同
此命令将为您完成以下任务:

注:

  • grep
    包括行时,
    grep-v
    排除行
  • wc-l
    计算行数
  • 输出的行数与您描述的条件的节点数相同

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

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

-c
jq
中的选项是在一行中输出每个元素,而不是漂亮地打印它,以防有多个污点。其余部分已经在

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

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

-c
jq
中的选项是在一行中输出每个元素,而不是漂亮地打印它,以防有多个污点。其余部分已经在

中解释过。以下命令可以在没有jq或没有安装jq的情况下使用

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

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

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

获取节点的完全证明查询,但节点上有污染影响NoSchedule

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

获取节点的完全证明查询,但节点上有污染影响NoSchedule

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