Wie kann ich sicher sein, dass eine VM auf GCP nicht heruntergefahren wurde, weil sie präemptibel war? (nachträglich, mithilfe von Stackdriver)

Wie kann ich sicher sein, dass eine VM auf GCP nicht heruntergefahren wurde, weil sie präemptibel war? (nachträglich, mithilfe von Stackdriver)

Ich suche nach einer Abfrage für Stackdriver, die Preemption-Ereignisse auf GCP-VMs erzeugt.

Warum? Weil Pods von meinen Knoten verschwinden. Anscheinend werden diese Knoten später beendet, weil Workloads fehlen und Autoscaling aktiviert ist. Es sieht also so aus, als würden die Pods zuerst sterben und das Autoscaling wie vorgesehen funktioniert und die Knoten herunterfährt. Trotzdem scheint es nicht zu passieren, wenn ich präemptive VMs/Knoten vermeide.

Antwort1

Kurz nachdem ich diese Frage gestellt hatte, fand ichhttps://cloud.google.com/logging/docs/audit/#system_event

Beim Filtern nach logName="projects/<my-project-name>/logs/cloudaudit.googleapis.com%2Fsystem_event"wurden also mehrere Präemptionen festgestellt. Ich wusste nicht, dass präemptierte Ressourcen automatisch neu erstellt werden. Dies erklärt, warum ich den Eindruck hatte, dass Pods verschwinden, während Nodes leer zurückbleiben. (siehe auchWarum bleiben Pods auf einem Knoten, der nach der Unterbrechung neu erstellt wurde, in der Containererstellung hängen?)

Antwort2

Die Protokolle für die Preemption dieser Instanz finden Sie mit dem folgenden erweiterten Stackdriver-Filter [1] inErweiterte Protokollabfragen.

Sie können die letzte Zeile dieses Filters in [2] ändern, um zu prüfen, wann er zuletzt gestartet wurde. Alternativ können Sie Befehle wie „uptime“ auf der VM ausführen, um zu sehen, wie lange sie aktiv ist.

[1]

resource.type="gce_instance"
resource.labels.instance_id="[INSTANCE ID]"
jsonPayload.event_subtype="compute.instances.preempted"

[2]jsonPayload.event_subtype="compute.instances.start"

verwandte Informationen