]$ 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