「kubectl」- 输出格式

kubectl get nodes

ROLES(kubeadm – How to add roles to nodes in Kubernetes?

A node role is just a label with the format node-role.kubernetes.io/<role>

You can add this yourself with kubectl label

命令的输出格式

Overview of kubectl/Output options
REFERENCE/JSONPath Support
JSONPath Support

在使用命令 kubectl 管理集群时,按照文档的说明输入命令即可。但是,如果需要进行某些批量操作,则需要控制 kubectl 输出方便处理的格式(例如 JSON XML 等等)。

比如,我们需要获取 Secret 的 token 值,我们能够采用更加“优雅”、“健壮”的方式来编写脚本(而不是一堆 awk sed grep 的组合):

# kubectl get serviceaccounts default -o jsonpath="{.secrets[0].name}"
default-token-968td

该命令的输出格式有以下几种,基本可以分为三类:
1)查看型 – 该类型的输出用于查看集群状态;
2)导出型 – 该类型的输出可以用于导出集群中 API 对象;
3)脚本型 – 可以用在 Shell 脚本编程中,进行集群管理;

-o wide

与普通输出相比,会输出额外信息。

该类型输出可以用于日常状态查看,比默认输出显示略多信息。

-o custom-columns, custom-columns-file

支持输出自定义列(custom-columns),支持从文件读取自定义列(custom-columns-file)

该输出类型可以用于查看状态,定义自己感兴趣的维度。

-o yaml

输出 YAML 格式的 API 对象。

概述出类型可以用于对象导出操作。

-o name

只输出资源名称,同时包含资源类型,二者以斜线分隔。
可以配合 Shell 脚本,参与批量处理。

-o json, jsonpath, jsonpath-file

JSONPath Support | Kubernetes

支持输出 JSON 格式(json),支持过滤特定字段(jsonpath),支持从文件读取要过滤的字段(jsonpath-file)
可以配合 Shell 脚本,在批量操作中使用。

使用 kubelet 命令的 –output 选项可以控制命令的输出字段:

kubectl get pods -o=jsonpath='{.items[0].metadata.name}'