Heim  >  Artikel  >  Backend-Entwicklung  >  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
WBOYnach vorne
2024-02-10 14:33:08914Durchsuche

删除无法运行 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
        }
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.

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen