Kubernetes では、サービスへの変更を監視することはアプリケーションの健全性を維持するために重要です。この記事では、client-go ライブラリを使用して Kubernetes サービスのイベント監視を実装する方法を説明します。
まず、clientcmd.BuildConfigFromFlags():
import ( "k8s.io/client-go/tools/clientcmd" ) // ... config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { panic(err.Error()) }構成を使用して新しい Kubernetes クライアントを作成します:
import ( "k8s.io/client-go/kubernetes" ) // ... clientset, err := kubernetes.NewForConfig(config)作成監視したいサービスを表すウォッチリスト:
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())受信イベントを処理するインフォーマーを確立します:
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") }, }, )インフォーマーを実行してイベントの監視を開始します:
stop := make(chan struct{}) go informer.Run(stop)サービス イベントの監視を続けるためにプログラムを無期限に実行し続けます:
以上がGo Client-go を使用して Kubernetes Service イベントを監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。