如何测量 kubernetes 中的 pod 启动时间?

如何测量 kubernetes 中的 pod 启动时间?

我想找到从分配 pod 到服务就绪之间的秒数。当我查看 pod 的事件日志时,没有事件表明服务何时就绪。我需要为此编写自定义脚本吗,还是有其他地方可以查看?

答案1

虽然 Kubernetes 没有内置专门用于此目的的机制,但吊舱条件

Pod 有一个 PodStatus,其中包含以下数组: Pod条件 Pod 已经通过或尚未通过的路径:

  • PodScheduled:该 Pod 已经被调度到某个节点。
  • ContainersReady:Pod 中的所有容器都已准备就绪。
  • Initialized: 全部 初始化容器 已成功启动。
  • Ready:Pod 能够处理请求,应该添加到所有匹配服务的负载平衡池中。

使用已创建的 Pod,你可以使用以下命令获取此数据:

kubectl get pod <pod_name> -oyaml 

并遵守以下条件:

  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2020-11-06T09:33:30Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2020-11-06T09:33:33Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2020-11-06T09:33:33Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2020-11-06T09:33:30Z"
      status: "True"
      type: PodScheduled

您还可以使用jq它进行 yaml 解析。


我想到另一个解决方案是Kube 状态指标

kube-state-metrics 是一项简单的服务,用于监听 Kubernetes API 服务器并生成有关对象状态的指标。(请参阅下面“指标”部分中的示例。)它并不关注单个 Kubernetes 组件的运行状况,而是关注内部各种对象的运行状况,例如部署、节点和 Pod。

使用它,您可以导出对象创建时间 ( kube_pod_start_time) 和对象就绪状态 ( kube_pod_status_ready)。当然,还有更多可用于 pod 和其他 kubernetes 对象的指标这里

请记住,如果您要测量, pod start time 您必须假设运行该 pod 所需的所有图像都已预先拉到机器上。否则,您的测量结果将不正确,因为它将包括影响 Kubernetes 性能的变量,例如网络或图像大小。

相关内容