我想了解Pod何时处于挂起状态,因为无法为其安排所需的资源。是否有办法跟踪Pod在“ Pending”或“ Scheduled”状态下花费的时间?
答案 0 :(得分:2)
lastTransitionTime
字段下的 status.conditions
显示了吊舱每个中间状态在达到Running
状态之前的时间戳。
广告连播转换Initialized -> Ready -> ContainersReady -> PodScheduled
下方的时间戳记:
$ kubectl get pod coredns-fb8b8dccf-2lhl4 -n=kube-system -o json | jq '.status.conditions'
[
{
"lastProbeTime": null,
"lastTransitionTime": "2019-07-22T19:58:17Z",
"status": "True",
"type": "Initialized"
},
{
"lastProbeTime": null,
"lastTransitionTime": "2019-07-22T19:58:56Z",
"status": "True",
"type": "Ready"
},
{
"lastProbeTime": null,
"lastTransitionTime": "2019-07-22T19:58:56Z",
"status": "True",
"type": "ContainersReady"
},
{
"lastProbeTime": null,
"lastTransitionTime": "2019-07-22T19:58:17Z",
"status": "True",
"type": "PodScheduled"
}
]
pod初始化后,通常处于Pending
状态,直到被调度(上面的PodScheduled
状态)并达到Running
状态。
答案 1 :(得分:1)
还没有其他答案...所以我们开始:
kubectl -n <namespace> get events --sort-by=.metadata.creationTimestamp
...将列出按时间戳排序的事件(适当替换<namespace>
)。
对于具体的pod,这将输出以逗号分隔的状态更改列表及其时间戳:
kubectl -n <namespace> get po/<pod-name> -o jsonpath="{range .status.conditions[*]}{.type}{','}{.lastTransitionTime}{'\n'}{end}"
考虑到这些Pod Lifecycle和一些脚本,就应该有可能导出您要查找的信息。
答案 2 :(得分:0)
要显示所有广告连播,也可以使用永久性的“待处理”状态:
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.phase}{"\t"}{.status.startTime}{"\n"}{end}'
kubectl get pods --all-namespaces -o custom-columns=NAMESPACE:metadata.namespace,POD:metadata.name,STATE:status.containerStatuses[*].state.waiting.reason,PHASE:status.phase
资源: