我想知道在Kubernetes中启动我的pod所需的时间。我的广告连播有3 Init Containers
和9 actual Containers
。
到目前为止,这是我尝试过的:
AGE
中的kubectl describe pod <pod_name>
将提供启动时间提示。kubectl events
或kubectl describe
命令引用广告连播的事件。问题是不是所有容器都存在事件。另外,没有明确的方法来了解Pod处于READY
状态所需的时间。问题: Kubernetes是否提供确定整个Pod启动时间的任何方法?
答案 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性能的变量,例如网络或图像大小。