问题描述
]$ 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