如何跟踪豆荚等待开始的时间?

时间:2019-07-31 18:17:25

标签: kubernetes

我想了解Pod何时处于挂起状态,因为无法为其安排所需的资源。是否有办法跟踪Pod在“ Pending”或“ Scheduled”状态下花费的时间?

3 个答案:

答案 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

资源: