我想找到从分配 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 性能的变量,例如网络或图像大小。