如何仅列出来自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

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

#!/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 --custom-column或json过滤plz建议的任何方法。

解决方法

您还可以使用labels和jsonpath从kubectl get nodes -o json输出中选择所需的内容

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

顺便说一句,如果您在任何时候输了,都可以kubernetes kubectl Cheat Sheet。它具有最常用的命令

,

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

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

但是我想要使用kubectl --custom-column或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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...