在 kubernetes 集群中获取 Pod 和 Node 的事件毫秒级精度
Getting Pod and Node's events millisecond level precision in a kubernetes cluster
我有一个 Kubernetes 集群,我需要收集各种 pod 和节点事件时间戳。
我通过构建一个通过 client-go 库与我的 Kubernetes 集群通信的 go 服务来做到这一点。我为订阅的 pod 和节点对象获取的时间戳只显示精确到秒的时间。
有没有办法可以得到毫秒级精度的时间?我找到了 similar issue raised,但没有解决方案。
有人可以帮助我吗?
欢迎来到社区@shresthi-garg
首先,正如您正确发现的那样,不可能以毫秒精度从 kubernetes 组件本身获取精确的时间戳。 this github issue 暂时关闭。
不过,仍然可以找到一些关于容器和其他事件的确切时间。以下是与容器相关的示例。
选项 1 - kubelet 默认情况下将大量日志写入系统日志。可以使用 journalctl
查看它们(注意!此方法适用于 systemd
系统。对于其他系统,请参阅 official kubenetes documentation)。命令示例:
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"
}
我有一个 Kubernetes 集群,我需要收集各种 pod 和节点事件时间戳。
我通过构建一个通过 client-go 库与我的 Kubernetes 集群通信的 go 服务来做到这一点。我为订阅的 pod 和节点对象获取的时间戳只显示精确到秒的时间。
有没有办法可以得到毫秒级精度的时间?我找到了 similar issue raised,但没有解决方案。
有人可以帮助我吗?
欢迎来到社区@shresthi-garg
首先,正如您正确发现的那样,不可能以毫秒精度从 kubernetes 组件本身获取精确的时间戳。 this github issue 暂时关闭。
不过,仍然可以找到一些关于容器和其他事件的确切时间。以下是与容器相关的示例。
选项 1 - kubelet 默认情况下将大量日志写入系统日志。可以使用 journalctl
查看它们(注意!此方法适用于 systemd
系统。对于其他系统,请参阅 official kubenetes documentation)。命令示例:
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"
}