Kubernetes:按年龄升序显示Pod

时间:2019-07-31 15:54:37

标签: sorting kubernetes kubectl

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

kubectl get po --sort-by={metadata.creationTimestamp}

它以降序显示豆荚。我们可以选择升序排序吗?

5 个答案:

答案 0 :(得分:2)

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

# kubectl get pods --sort-by=.status.startTime | awk 'NR == 1; NR > 1 {print $0 | "tac"}'

paulogrell提供的使用JSON处理器的方法也可以,但是可能需要更多的努力:对于某些Linux发行版,您需要从源代码下载并编译jq。至于jq命令行,我建议将“名称”添加到map参数中并按“时间戳”排序:

# 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)'

答案 1 :(得分:0)

我相信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)'

下降

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

希望这会有所帮助

答案 2 :(得分:0)

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

$ kubectl get pods --sort-by=.metadata.creationTimestamp | tail -n +2 | tac

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

$ kubectl get pods --sort-by=.metadata.creationTimestamp | tail -n +2 | tail -r

如果需要标题:

$ echo 'NAME                                                              READY   STATUS             RESTARTS   AGE' | \
 kubectl get pods --sort-by=.metadata.creationTimestamp | tail -n +2 | tac

您可能只需要相应地调整标题上的标签即可。

答案 3 :(得分:0)

一旦您使用了 --no-headers 选项,就很容易对结果进行反向排序,因为HEADER不会成为Pod升序排列的一部分。

以下是完整的命令,可准确获得预期的结果:

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

答案 4 :(得分:0)

适用于 MacOS 并保留任意标头的更简单版本:

kubectl get node --sort-by=.metadata.creationTimestamp | { read -r headers; echo "$headers"; tail -r; }