使用 --sort-by 和 kubectl get pods --all-namespaces 按命名空间和名称排序不起作用

问题描述 投票:0回答:1

我猜此时答案是否定的。我在这里向蜂巢思维寻求一个明确的答案,或者万一我错了(我真的希望我是错的),请举一个具体的例子。

我已经能够成功使用

jq
,但我希望我只是在
--sort-by
的 jsonpath 语法中遗漏了一些东西。

我所知道的

根据文档(也在下面引用)

kubectl
--sort-by
参数采用jsonpath语法。

对列表对象进行排序

要将对象输出到终端窗口中的排序列表,您可以将

--sort-by
标志添加到支持的 kubectl 命令中。通过使用
--sort-by flag
指定任何数字或字符串字段对对象进行排序。要指定字段,请使用 jsonpath 表达式。

语法

kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>

我查看了他们的 jsonpath 示例,虽然我似乎能够使用语法来输出我认为可排序的对象,但实际上我得到了空白输出。

也许输出可以连接/转换为字符串,而不是数组/列表,但这似乎对我不起作用。

任何人都可以确认在多个字段中使用

--sort-by
是否成功?

我尝试过的事情

成功的jsonpath输出示例:

$ kubectl get --namespace ix-authentik pods -o=jsonpath="{range .items[*]}[{.metadata.namespace},{.metadata.name}]{end}" && echo
[<namespace a>,<pod a1>][<namespace a>,<pod a2>][<namespace b>,<pod b1>....

基于上述语法的失败排序尝试示例:

$ kubectl get --all-namespaces pods --sort-by="{range .}[{.metadata.namespace},{.metadata.name}]{end}"
No resources found

$ kubectl get --all-namespaces pods --sort-by="[{.metadata.namespace},{.metadata.name}]"
# Randomly sorted mess

$ kubectl get --all-namespaces pods --sort-by="{.metadata.namespace},{.metadata.name}"
# Sorted only by namespace

$ kubectl get --all-namespaces pods --sort-by=".metadata.namespace,.metadata.name"
No resources found

$ kubectl get --all-namespaces pods --sort-by="[.metadata.namespace,.metadata.name]"
No resources found

我查看过的资源

kubernates GitHub 存储库存在几个有关排序的问题,甚至有一个 2019 年的封闭 PR,他们打算弃用 --sort-by 功能,因为它太糟糕了。 但我无法轻松找到多个值。 (不过我可能搜索错了)

我什至尝试过 Bing Chat 的 AI 来解决这个问题,它建议的语法与上面类似,但它只在第一列上排序。人工智能无法找出尚未(正确)回答的问题(惊讶,惊讶),所以我正在接触人类驱动的蜂巢思维。

sorting kubernetes kubectl
1个回答
0
投票

一种解决方法是在

kubectl
中指定自定义列,并使用
sort
实现多字段排序功能。

示例:

$ kubectl get nodes -o custom-columns=NAME:.metadata.name,ZONE:.metadata.labels.topology\.kubernetes\.io/zone,CREATED:.metadata.creationTimestamp --no-headers | sort -k 2b,2 -k 3b,3

先按可用区排序,再按同一可用区内的创建时间戳排序。

© www.soinside.com 2019 - 2024. All rights reserved.