库伯内特按年龄分类豆荚

我可以用名字来分类我的库伯内特豆荚:

kubectl get pods --sort-by=.metadata.name

如何使用 kubectl按年龄对它们(或其他资源)进行排序?

82882 次浏览

Pods 具有状态,您可以使用该状态查找 startTime。

我想像 kubectl get po --sort-by=.status.startTime这样的应该可以。

你也可以试试:

  1. kubectl get po --sort-by='{.firstTimestamp}'.
  2. 谢谢@Chris

同样显而易见的是,在库伯内特1.7版本中,排序被破坏了。

Https://github.com/kubernetes/kubectl/issues/43

这是错误报告: https://github.com/kubernetes/kubernetes/issues/48602

这里是公关: https://github.com/kubernetes/kubernetes/pull/48659/files

kubectl get pods --sort-by=.metadata.creationTimestamp

如果你想根据年龄以相反的顺序排序:

kubectl get po --sort-by=.metadata.creationTimestamp -n <<namespace>> | tac

如果您正在尝试获得最新创建的吊舱,您可以执行以下操作

kubectl get pods --sort-by=.metadata.creationTimestamp -o jsonpath='{.items[-1:].metadata.name}'

注意,-1:获取列表中的最后一项,然后返回 pod 名称

如果你只想知道最新创建的豆荚的名称;

POD_NAME=$(kubectl get pod --sort-by=.metadata.creationTimestamp -o name | cut -d/ -f2 | tail -n 1)
echo "${POD_NAME}"

我想看看过去24小时内更新的所有分离舱。这种方法非常有效,除了得到豆荚之外,它不依赖于特定版本的库伯内特或库伯内特的高级参数:

kubectl get pods | awk '{print $1 " : " $5}' | grep -E ':\s([1-9]|[12][0-4])h$' | sort -k3,3

这个新命令(自从 Kubernetes 1.23以来)对我来说非常有效:

kubectl alpha events

相比之下,这两种方法对我都不管用(得到的是未分类的事件) :

  • kubectl get events --sort-by='.lastTimestamp'
  • kubectl get events --sort-by=.metadata.creationTimestamp

我还看到报告说,上述失败是由于缺少事件属性: https://github.com/kubernetes/kubernetes/issues/29838#issuecomment-991070746