如何查看k8s吊舱启动所需的时间?

时间:2020-09-24 14:54:34

标签: kubernetes kubernetes-pod

我想知道在Kubernetes中启动我的pod所需的时间。我的广告连播有3 Init Containers9 actual Containers。 到目前为止,这是我尝试过的:

  • 方法1: 启动pod并进行监视,直到运行9/9个容器。 AGE中的kubectl describe pod <pod_name>将提供启动时间提示。
  • 方法2: 使用kubectl eventskubectl describe命令引用广告连播的事件。问题是不是所有容器都存在事件。另外,没有明确的方法来了解Pod处于READY状态所需的时间。

enter image description here

问题: Kubernetes是否提供确定整个Pod启动时间的任何方法?

2 个答案:

答案 0 :(得分:0)

随着事情开始进行设置,您的广告连播会逐步进行PodConditions组。

您可以使用:

kubectl get po <pod_name> -o yaml

观察在各种情况下的进展:

...
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2020-09-09T08:47:11Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2020-09-09T08:47:12Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2020-09-09T08:47:12Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2020-09-09T08:47:11Z"
    status: "True"
    type: PodScheduled
...

如果您想在shell中自动解析所有这些内容,建议使用yq 进行实际的YAML解析。

答案 1 :(得分:0)

尽管在Kubernetes中没有确切的机制,您可能需要检查Kube-state-metrics

kube-state-metrics是一个监听Kubernetes的简单服务 API服务器并生成有关对象状态的度量。 (看到 下面的“指标”部分中的示例。) Kubernetes各个组件的运行状况,而是 内部各种对象(例如部署,节点和 豆荚。

使用它可以导出对象创建时间。在这种情况下,度量标准名称将为kube_<OBJECT>_created。该article有关第6节中的指标的信息,进一步说明了有关kube状态指标和对象创建时间的用法。

请注意,如果要测量pod start time,则应假定运行该pod所需的所有图像均已在计算机上预拉。否则,您的测量将是不正确的,因为它将包含影响Kubernetes性能的变量,例如网络或图像大小。