Kubectl命令行jsonpath的使用
本篇文章主要介绍了jsonpath的语法和使用。
jsonpath的语法介绍
Kubectl 支持 JSONPath 模板。
JSONPath 模板由 {} 包起来的 JSONPath 表达式组成。Kubectl 使用 JSONPath 表达式来过滤 JSON 对象中的特定字段并格式化输出。除了原始的 JSONPath 模板语法,以下函数和语法也是有效的:
使用双引号将 JSONPath 表达式内的文本引起来。
使用 range,end 运算符来迭代列表。
使用负片索引后退列表。负索引不会"环绕"列表,并且只要 -index + listLength> = 0 就有效。
函数
描述
示例
结果
text
纯文本
kind is {.kind}
kind is List
@
当前对象
{@}
与输入相同
. or []
子运算符
{.kind} or {['kind']}
List
..
递归下降
{..name}
127.0.0.1 127.0.0.2 myself e2e
*
通配符。获取所有对象
{.items[*].metadata.name}
[127.0.0.1 127.0.0.2]
[start:end :step]
下标运算符
{.users[0].name}
myself
[,]
并集运算符
{.items[*]['metadata.name', 'status.capacity']}
127.0.0.1 127.0.0.2 map[cpu:4] map[cpu:8]
?()
过滤
{.users[?(@.name=="e2e")].user.password}
secret
range, end
迭代列表
{range .items[*]}[{.metadata.name}, {.status.capacity}] {end}
[127.0.0.1, map[cpu:4]] [127.0.0.2, map[cpu:8]]
''
引用解释执行字符串
{range .items[*]}{.metadata.name}{'\t'}{end}
127.0.0.1 127.0.0.2
下面我们在k8s中使用jsonpath来获取我们想要的内容
通过jsonpath获取信息示例
纯文本方式
获取当前对象
获取pod的apiversion
获取pod的name
递归获取yaml所有的name
获取所有状态条件中的类型
获取状态第一个条件的类型
从第一个状态条件开始到最后一个结束,每隔2个获取一次
获取状态条件中的状态和类型
空格和换行符的引用
获取request中的cpu值
获取request中的cpu和memory
获取promotheus这个pod中alertmanage的容器端口
prometheus的yaml文件只截取部分
参考文档
最后更新于
这有帮助吗?