Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-02-10 14:33:08
avant
912 Les gens l'ont consulté

删除无法运行 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
        }
Copier après la connexion
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,
        })
    }
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!