如何从kubectl输出中只列出主节点

  • 本文关键字:节点 kubectl 输出 kubectl
  • 更新时间 :
  • 英文 :

]$ kubectl get nodes
NAME                            STATUS                     ROLES    AGE    VERSION
ip<IP>.ec2.internal   Ready                      master   300d   v1.15.3
ip<IP>.ec2.internal   Ready                      node     180d   v1.15.3
ip<IP>.ec2.internal   Ready                      master   300d   v1.15.3
ip<IP>.ec2.internal   Ready                      node     300d   v1.15.3
ip<IP>.ec2.internal   Ready                      node     300d   v1.15.3
ip<IP>.ec2.internal   Ready,SchedulingDisabled   node     180d   v1.15.3
ip<IP>.ec2.internal   Ready                      node     180d   v1.15.3
ip<IP>.ec2.internal   Ready                      master   300d   v1.15.3
ip<IP>.ec2.internal   Ready                      node     300d   v1.15.3

我想要的是输出应该只有一个节点名称列表,显示哪个是第一列,哪个是master。我尝试了脚本方式:

#!/bin/bash
kubectl get nodes --selector=node-role.kubernetes.io/master > nodelist.txt
cat nodelist.txt
while IFS=" " read -r f1
do
echo $f1
done < nodelist.txt

,但我想要任何使用kubectl的方法——自定义列或json过滤plz建议。

您还可以使用标签和jsonpath从kubectl get nodes -o json输出中选择您需要的任何内容

kubectl get nodes -l node-role.kubernetes.io/master -o 'jsonpath={.items[*].metadata.name}'

顺便说一句,如果你在任何时候输了,你可以用kubernetes kubectl作弊表。它有最常用的命令

我没有尝试过,但它应该会给你想要的输出。

kubectl get nodes | grep master | awk 'print {$1 $3}'

但我想要任何使用kubectl的方法——自定义列或json过滤plz建议。

是的,您可以使用--custom-columns只显示名称

kubectl get nodes -o custom-columns=NAME:.metadata.name
NAME
my-node

此外,您可以使用--no-headers省略标题

kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers
my-node

使用您提供的选择器,只显示主节点,完整的命令是:

kubectl get nodes --selector=node-role.kubernetes.io/master -o custom-columns=NAME:.metadata.name --no-headers

相关内容

  • 没有找到相关文章

最新更新