bounty还有5天到期。回答此问题可获得+50声望奖励。Michael希望引起更多关注这个问题。
我正在查看我们在日志聚合工具(Splunk,但不重要)中看到的Kubernetes日志,并且我试图可视化一天中的图像拉取速度。日志中显示的消息如下所示:
已成功提取图像“ www.example.com 中的“com”
值1。100152244s是一个字符串,所以显然不能用于可视化。字符串本身可以以多种格式出现:
1.100152244s 4m4。第六十四章.10064ms
这是一个愚蠢的问题,但我们在这段时间后看到了什么单位?这些是纳秒吗
先谢谢你
1条答案
按热度按时间93ze6v8z1#
免责声明:在撰写本文时,我不是Kubernetes内部的Maven,也不了解Go。(但是,我熟悉K8s组件的一般功能,也熟悉高级/低级编程语言。..)经过大约10分钟的研究,我得到了满意的答案:
问题
在这一时期之后我们看到了什么单位?这些是纳秒吗
简短回答
简短的答案在于时间。去吧
长回答
Kubernetes事件“* Successful pulling imagein*”由
kubelet
组件生成。Kubelet 主要负责管理pod及其容器(的生命周期)。它为容器执行的各个阶段生成事件,包括image pulling
。因此,你提到的事件是 kubelet 在容器执行的镜像拉取阶段生成的。(至少我已经知道了这一点)。你似乎有一个kubelet〈= release-1。24在使用中。在此生成相应的事件:
duration字符串来自
time.Since(startTime)
(Duration
)stament。fmt.Sprintf
对该Duration值调用func (d Duration) String() string
方法,该方法将根据以下条件生成一个字符串输出:也许你可以在Splunk中开发合适的模式,将这种格式转换为可视化所需的时间单位(使用if-else条件也可能有所帮助,例如:g.值包括“h”、“m”和“s”?然后使用正则表达式
(\d+)h(\d+)m(\d+\.?\d*)s
从e中提取值。g.“2h10m10.100152244s”)。旁注
kubelet的更新版本(〉release-1.24)似乎使用稍微不同的log
例如
已成功在8中提取图像“xyz”。831719579s(8.831722421 s包括等待)