PHP-Editor Yuzai stellte vor: Bei der Verwendung des Kubernetes-Operator-Controllers kommt es manchmal vor, dass Indikatoren gelöscht werden, die nicht ausgeführt werden können. Dies kann zu Laufzeitfehlern und Inkonsistenzen führen. Um dieses Problem zu beheben, müssen wir einige Schritte unternehmen, um diese nicht funktionierenden Indikatoren zu entfernen. In diesem Artikel finden Sie detaillierte Lösungen, die Ihnen dabei helfen, nicht laufende Kubernetes-Operator-Controller-Metriken erfolgreich zu löschen. Lass uns einen Blick darauf werfen!
Ich habe an meinem Operator gearbeitet, bei dem ich einige benutzerdefinierte Indikatoren habe, die Werte festlegen, und es funktioniert einwandfrei (Registrierung und Anzeige von Indikatorwerten). Das Problem besteht darin, dass die Löschung des Indikators nicht erfolgt. Ich habe versucht, eine separate Funktion zu deklarieren, um den Indikator zu entfernen.
Mein Betreiber startet einen zustandsbehafteten Satz und Dienst, aber nach dem Löschen meines CR werden die Unterressourcen gelöscht, aber die Metriken werden nicht aktualisiert/entfernt.
func (r *cr) reconcile(ctx context.context, req ctrl.request) (ctrl.result, error) { ...... ...... if errors.isnotfound(err) { l.info("cr not found so maybe deleted") l.info("deleting cr metric instance") deletemetric(instance, true) return ctrl.result{}, nil }
func DeleteMetric(cr *CR, condition bool) { l := logf.Log.WithName("CR Metric deletion") l.Info("Deleting metric for CR", "instance", cr.Name, "from namespace", cr.Namespace) if condition { custom_metric_name.Delete(prometheus.Labels{ "name": cr.Name, "namespace": cr.Namespace, }) } }
Ich habe auch versucht, das Prädikat mit deletefunc
zu deklarieren, aber ohne Erfolg, mein Indikator kann immer noch nicht gelöscht werden.
Danke für jede Hilfe oder Hinweise.
Ich konnte diese Funktionalität implementieren. Um eine Metrik zu löschen, verwenden Sie einfach die Löschfunktion, um eine benutzerdefinierte Metrik basierend auf dem abgeschlossenen Ressourcenvorgang aufzurufen.
Zu Ihrer Information: Der Aufruf von delete für benutzerdefinierte Indikatoren funktioniert. Sie können die Funktion aufrufen, nachdem Sie mit der Arbeit an der benutzerdefinierten Ressource fertig sind.
https://pkg.go.dev/github .com/prometheus/client_golang/prometheus#MetricVec.DeleteLabelValues
Das obige ist der detaillierte Inhalt vonEntfernen Sie die Metrik, die den Kubernetes-Operator-Controller nicht ausführen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!