我正在寻找一个 stackdriver 查询,它将在 GCP VM 上产生抢占事件。
为什么?因为我的 Pod 从节点上消失了。显然,这些节点后来由于缺少工作负载和启用了自动缩放而被终止。所以一切看起来都像是 Pod 首先死亡,然后自动缩放器按应有的方式运行并关闭节点。不过,当我避免使用可抢占的虚拟机/节点时,这种情况似乎不会发生。
答案1
问完这个问题后不久,我发现https://cloud.google.com/logging/docs/audit/#system_event
因此,过滤
logName="projects/<my-project-name>/logs/cloudaudit.googleapis.com%2Fsystem_event"
显示发生了几次抢占。我不知道被抢占的资源会自动重新创建。这解释了为什么我感觉 pod 消失了,而节点却空了。(另请参阅为什么在被抢占后重新创建的节点上的 pod 会卡在 ContainerCreating 状态?)
答案2
可以使用以下 Stackdriver 高级过滤器 [1] 找到此实例上的抢占日志高级日志查询。
您可以将此过滤器的最后一行更改为 [2] 以检查上次启动的时间。或者,您可以在虚拟机上运行“uptime”等命令来查看虚拟机已启动多长时间。
[1]
resource.type="gce_instance"
resource.labels.instance_id="[INSTANCE ID]"
jsonPayload.event_subtype="compute.instances.preempted"
[2]jsonPayload.event_subtype="compute.instances.start"