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
排序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)
kubectl在kube-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)
我相信 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)
希望这可以帮助