Regarder les événements du service Kubernetes avec le client Go
Problème :
Comment surveiller et recevoir notifications lorsqu'un service est créé, supprimé ou mis à jour dans Kubernetes à l'aide du client-go bibliothèque ?
Solution :
Informateur et ListWatch
Pour regarder les événements de service, nous pouvons utiliser la liste de surveillance et l'informateur de la bibliothèque client. Une liste de surveillance nous permet de créer un observateur pour surveiller des ressources spécifiées, tandis qu'un informateur fournit une interface de niveau supérieur qui gère le processus de surveillance.
Voici comment surveiller les événements de service à l'aide de client-go :
package main import ( "fmt" "flag" "time" k8sclient "k8s.io/client-go/kubernetes" corev1 "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/cache" "k8s.io/client-go/pkg/fields" ) func main() { var kubeconfig = flag.String("kubeconfig", "./config", "path to the kubeconfig file") flag.Parse() config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { panic(err.Error()) } clientset, err := k8sclient.NewForConfig(config) if err != nil { panic(err.Error()) } watchlist := cache.NewListWatchFromClient(clientset.Core().RESTClient(), "services", corev1.NamespaceDefault, fields.Everything()) _, controller := cache.NewInformer( watchlist, &corev1.Service{}, time.Second * 0, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { fmt.Printf("Service added: %v\n", obj) }, DeleteFunc: func(obj interface{}) { fmt.Printf("Service deleted: %v\n", obj) }, UpdateFunc: func(oldObj, newObj interface{}) { fmt.Printf("Service updated: %v\n", oldObj) }, }, ) stop := make(chan struct{}) go controller.Run(stop) for { time.Sleep(time.Second) } }
Explication :
Nous créons d'abord une liste de surveillance en utilisant NewListWatchFromClient, spécifiant le type de ressource (services), l'espace de noms (par défaut) et le sélecteur de champ (tout). Ensuite, nous créons un informateur à l'aide de NewInformer et fournissons une liste de gestionnaires d'événements pour gérer les différents événements (ajout, suppression, mise à jour). Dans les gestionnaires d'événements, nous imprimons le message approprié lorsqu'un service est ajouté, supprimé ou mis à jour. Enfin, on démarre la montre en exécutant le contrôleur dans une goroutine. Ce code surveillera en permanence les événements de service et imprimera les détails de toute modification.
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!