Dans Kubernetes, la surveillance des modifications apportées aux services est cruciale pour maintenir la santé des applications. Cet article montre comment implémenter la surveillance des événements pour les services Kubernetes à l'aide de la bibliothèque client-go.
Pour commencer, établissez une configuration Kubernetes en créant un objet de configuration à l'aide de clientcmd.BuildConfigFromFlags() :
import ( "k8s.io/client-go/tools/clientcmd" ) // ... config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { panic(err.Error()) }
Utilisez la configuration pour créer un nouveau client Kubernetes :
import ( "k8s.io/client-go/kubernetes" ) // ... clientset, err := kubernetes.NewForConfig(config)
Créez une liste de surveillance représentant les services que vous souhaitez surveiller :
import ( "k8s.io/client-go/tools/cache" v1 "k8s.io/client-go/pkg/api/v1" ) // ... watchlist := cache.NewListWatchFromClient(clientset.Core().RESTClient(), "services", v1.NamespaceDefault, fields.Everything())
Établissez un informateur pour gérer les événements entrants :
informer := cache.NewInformer( watchlist, &v1.Service{}, time.Second * 0, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { fmt.Printf("service added: %s \n", obj) }, DeleteFunc: func(obj interface{}) { fmt.Printf("service deleted: %s \n", obj) }, UpdateFunc: func(oldObj, newObj interface{}) { fmt.Printf("service changed \n") }, }, )
Exécutez l'informateur pour démarrer la surveillance des événements :
stop := make(chan struct{}) go informer.Run(stop)
Gardez le programme s'exécutant indéfiniment pour continuer à surveiller les événements de service :
for { time.Sleep(time.Second) }
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!