Heim > Backend-Entwicklung > Golang > Entfernen Sie die Metrik, die den Kubernetes-Operator-Controller nicht ausführen kann

Entfernen Sie die Metrik, die den Kubernetes-Operator-Controller nicht ausführen kann

WBOY
Freigeben: 2024-02-10 14:33:08
nach vorne
946 Leute haben es durchsucht

删除无法运行 kubernetes 操作员控制器的指标

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!

Frageninhalt

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
        }
Nach dem Login kopieren
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,
        })
    }
}
Nach dem Login kopieren

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.

Workaround

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage