函数式编程
首先,正如您正确发现的那样,不可能以毫秒级的精度从 kubernetes 组件本身获得精确的时间戳。这个github问题现在已经关闭了。但是,仍然可以找到有关容器和其他事件的一些确切时间。下面是一个与容器相关的示例。选项 1 - 默认情况下,kubelet 会将大量日志写入系统日志。可以使用 using 查看它们(注意!此方法适用于系统。对于其他系统,请参阅官方 kubenetes 文档)。命令示例:journalctlsystemdjournalctl -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" }