Maison >développement back-end >Golang >Supprimer la métrique impossible d'exécuter le contrôleur d'opérateur Kubernetes

Supprimer la métrique impossible d'exécuter le contrôleur d'opérateur Kubernetes

WBOY
WBOYavant
2024-02-10 14:33:08955parcourir

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

L'éditeur PHP Yuzai présente : Lors de l'utilisation du contrôleur d'opérateur kubernetes, nous rencontrons parfois la situation de suppression d'indicateurs qui ne peuvent pas être exécutés. Cela peut entraîner des erreurs d'exécution et des incohérences. Pour résoudre ce problème, nous devons prendre certaines mesures pour supprimer ces indicateurs qui ne fonctionnent pas. Cet article fournira des solutions détaillées pour vous aider à supprimer avec succès l'indicateur du contrôleur d'opérateur Kubernetes qui ne fonctionne pas. Nous allons jeter un coup d'oeil!

Contenu de la question

J'ai travaillé sur mon opérateur où j'ai des indicateurs personnalisés définissant des valeurs et cela fonctionne bien (enregistrement et affichage des valeurs des indicateurs). Le problème est que la suppression de l’indicateur ne se produit pas. J'ai essayé de déclarer une fonction distincte pour supprimer l'indicateur.

Mon opérateur démarre un ensemble et un service avec état, mais après la suppression de mon cr, les sous-ressources sont supprimées mais les métriques ne reçoivent aucune mise à jour/suppression.

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,
        })
    }
}

J'ai également essayé de déclarer le prédicat en utilisant deletefunc mais sans succès, mon indicateur ne peut toujours pas être supprimé.

Merci pour toute aide ou pointeur.

Solution de contournement

J'ai pu implémenter cette fonctionnalité, pour supprimer une métrique, utilisez simplement la fonction de suppression pour appeler une métrique personnalisée basée sur l'opération de ressource terminée.

Pour information, appeler delete sur des indicateurs personnalisés fonctionne, vous pouvez appeler la fonction après avoir fini de travailler sur la ressource personnalisée.

https://pkg.go.dev/github .com/prometheus/client_golang/prometheus#MetricVec.DeleteLabelValues

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer