Kubernetes:按年龄升序显示 Pod

P E*_*ram 16 sorting kubernetes kubectl

我使用以下命令按年龄对豆荚进行排序

kubectl get pods --sort-by={metadata.creationTimestamp}
Run Code Online (Sandbox Code Playgroud)

它以降序显示豆荚。我们如何像升序一样选择排序顺序?

Ami*_*rma 13

这非常简单:一旦您使用了--no-headers选项,HEADER 将不会成为输出的一部分(pod 的升序排序列表),您可以简单地对命令的结果进行反向排序。

这是获得预期结果的完整命令:

kubectl get po --sort-by={metadata.creationTimestamp} --no-headers | tac

  • 我最喜欢这个答案。如果您也只是在寻找最新的,`k get po ... | tail -n 1` 也可以工作,无需支付 tac 费用。 (2认同)

meb*_*s99 7

排序kubectl输出并awk提供带有标题的表视图。不需要安装额外的工具。

# kubectl get pods --sort-by=.status.startTime | awk 'NR == 1; NR > 1 {print $0 | "tac"}'
Run Code Online (Sandbox Code Playgroud)

An approach with JSON processor offered by paulogrell works also but could require more effort: for some Linux distributions you'll need to download and compile jq from source code. As for the jq command line I'd suggest to add the "name" to the map parameters and sort by "timestamp":

# kubectl get pods -o json | jq '.items | group_by(.metadata.creationTimestamp) | map({"name": .[0].metadata.name, "timestamp": .[0].metadata.creationTimestamp, "count": length}) | sort_by(.timestamp)'
Run Code Online (Sandbox Code Playgroud)


Ric*_*ico 6

kubectlkube-apiserver撰写本文时(AFAIK)不支持或不支持,但解决方法是:

$ kubectl get pods --sort-by=.metadata.creationTimestamp | tail -n +2 | tac
Run Code Online (Sandbox Code Playgroud)

或者如果 tac 不可用(MacOS X):

$ kubectl get pods --sort-by=.metadata.creationTimestamp | tail -n +2 | tail -r
Run Code Online (Sandbox Code Playgroud)

如果你想要标题:

$ echo 'NAME                                                              READY   STATUS             RESTARTS   AGE' | \
 kubectl get pods --sort-by=.metadata.creationTimestamp | tail -n +2 | tac
Run Code Online (Sandbox Code Playgroud)

您可能只需要相应地调整标题上的选项卡。或者,如果您不想使用tail -n +2,可以使用--no-headers. 例如:

$ kubectl get pods --sort-by=.metadata.creationTimestamp --no-headers | tac
Run Code Online (Sandbox Code Playgroud)


pau*_*ell 1

我相信 Kubernetes API 尚不支持此选项,但作为解决方法,您可以使用 JSON 处理器 (jq) 来调整其输出。

上升

kubectl get pods -o json | jq '.items | group_by(.metadata.creationTimestamp) | map({"timestamp": .[0].metadata.creationTimestamp, "count": length}) | sort_by(.count)'
Run Code Online (Sandbox Code Playgroud)

降序

kubectl get pods -o json | jq '.items | group_by(.metadata.creationTimestamp) | map({"timestamp": .[0].metadata.creationTimestamp, "count": length}) | sort_by(.count) | reverse'
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助