Kubernetes 按年龄对 Pod 进行排序
Posted
技术标签:
【中文标题】Kubernetes 按年龄对 Pod 进行排序【英文标题】:Kubernetes sort pods by age 【发布时间】:2017-12-31 19:01:12 【问题描述】:我可以使用以下方法按名称对我的 Kubernetes pod 进行排序:
kubectl get pods --sort-by=.metadata.name
如何使用kubectl
按年龄对它们(或其他资源)进行排序?
【问题讨论】:
【参考方案1】:Pod 有状态,您可以使用它来找出 startTime。
我想像kubectl get po --sort-by=.status.startTime
这样的东西应该可以工作。
你也可以试试:
kubectl get po --sort-by='.firstTimestamp'
。
kubectl get pods --sort-by=.metadata.creationTimestamp
谢谢@chris
同样显然在 Kubernetes 1.7 版本中,排序方式被破坏了。
https://github.com/kubernetes/kubectl/issues/43
这是错误报告:https://github.com/kubernetes/kubernetes/issues/48602
这是公关:https://github.com/kubernetes/kubernetes/pull/48659/files
【讨论】:
@vjdhama 有没有办法获取可以通过这种方式排序的完整列表? 完整列表是什么意思?您的意思是所有类型的资源。 有没有办法反向排序?因此,例如,您可以执行一次 watch kubectl 并在顶部获取最新的 pod? 这仅在我还包含-o json
或 -o wide
标志时才有效。在 1.7.x 和 1.9.x 上测试
@JoeJ kubectl 文档没有相反的顺序,但您可以使用 tail 命令来实现。 kubectl get pods --sort-by=.metadata.creationTimestamp | tail -r | head -n 1
我使用 tail -r
来恢复输出。然后head -n 1
打印最新的pod【参考方案2】:
kubectl get pods --sort-by=.metadata.creationTimestamp
【讨论】:
我收到了error: unknown type *api.Pod, expected unstructured in map[reflect.Type]*printers.handlerEntry
的回复
这对于排序 ConfigMaps 很有用:kubectl get cm --sort-by=.metadata.creationTimestamp
【参考方案3】:
如果你想根据年龄倒序排列:
kubectl get po --sort-by=.metadata.creationTimestamp -n <<namespace>> | tac
【讨论】:
【参考方案4】:我创建 KUBESORT 正是为了这些排序目的。 请试一试,
https://github.com/AATHITH/kubesort
【讨论】:
【参考方案5】:如果您尝试获取最近创建的 pod,您可以执行以下操作
kubectl get pods --sort-by=.metadata.creationTimestamp -o jsonpath='.items[-1:].metadata.name'
注意-1:
获取列表中的最后一项,然后我们返回 pod 名称
【讨论】:
【参考方案6】:如果您只想要最近创建的 pod 的名称;
POD_NAME=$(kubectl get pod --sort-by=.metadata.creationTimestamp -o name | cut -d/ -f2 | tail -n 1)
echo "$POD_NAME"
【讨论】:
以上是关于Kubernetes 按年龄对 Pod 进行排序的主要内容,如果未能解决你的问题,请参考以下文章