为了账号安全,请及时绑定邮箱和手机立即绑定

在 kubernetes 集群中获取 Pod 和 Node 的事件毫秒级精度

在 kubernetes 集群中获取 Pod 和 Node 的事件毫秒级精度

Go
守候你守候我 2022-08-30 21:11:10
我有一个 Kubernetes 集群,我需要收集各种 pod 和节点事件时间戳。我通过构建一个 go 服务来做到这一点,该服务通过 client-go 库与我的 Kubernetes 集群进行通信。我为订阅的 pod 和节点对象获得的时间戳仅显示时间,直到秒精度。有没有办法以毫秒为单位获得时间精度水平?我发现提出了类似的问题,但没有解决方案。有人可以帮我吗?
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

首先,正如您正确发现的那样,不可能以毫秒级的精度从 kubernetes 组件本身获得精确的时间戳。这个github问题现在已经关闭了。

但是,仍然可以找到有关容器和其他事件的一些确切时间。下面是一个与容器相关的示例。

选项 1 - 默认情况下,kubelet 会将大量日志写入系统日志。可以使用 using 查看它们(注意!此方法适用于系统。对于其他系统,请参阅官方 kubenetes 文档)。命令示例:journalctlsystemd

journalctl -u kubelet -o short-precise

-u - 按单位过滤

-o - 输出选项

我们正在寻找的输出行将是:

May 18 21:00:30.221950 control-plane kubelet[8576]: I0518 21:00:30.221566    8576 scope.go:111] "RemoveContainer" containerID="d7d0403807684ddd4d2597d32b90b1e27d31f082d22cededde26f6da8281cd92"

选项 2 - 从容器化引擎获取此信息。在下面的示例中,我使用了 Docker 来实现这一点。我运行以下命令:

docker inspect container_id/container_name

输出将如下所示:

{

        "Id": "d7d0403807684ddd4d2597d32b90b1e27d31f082d22cededde26f6da8281cd92",

        "Created": "2021-05-18T21:00:07.388569335Z",

        "Path": "/docker-entrypoint.sh",

        "Args": [

            "nginx",

            "-g",

            "daemon off;"

        ],

        "State": {

            "Status": "running",

            "Running": true,

            "Paused": false,

            "Restarting": false,

            "OOMKilled": false,

            "Dead": false,

            "Pid": 8478,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2021-05-18T21:00:07.593216613Z",

            "FinishedAt": "0001-01-01T00:00:00Z"

        }


查看完整回答
反对 回复 2022-08-30
  • 1 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号