Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memantau Acara Perkhidmatan Kubernetes Menggunakan Klien Go?
Menonton Acara Perkhidmatan Kubernetes dengan Go Client
Masalah:
Cara memantau dan menerima pemberitahuan apabila perkhidmatan dibuat, dipadamkan atau dikemas kini dalam Kubernetes menggunakan klien-go perpustakaan?
Penyelesaian:
Informer dan ListWatch
Untuk menonton acara perkhidmatan, kami boleh menggunakan senarai pantau dan pemberi maklumat daripada perpustakaan pelanggan-pergi. Senarai pantauan membolehkan kami membuat pemerhati untuk memantau sumber tertentu, manakala pemberi maklumat menyediakan antara muka peringkat lebih tinggi yang mengendalikan proses menonton.
Begini cara menonton acara perkhidmatan menggunakan 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) } }
Penjelasan:
Kami mula-mula membuat senarai pantau menggunakan NewListWatchFromClient, menyatakan jenis sumber (perkhidmatan), ruang nama (lalai), dan pemilih medan (semuanya). Kemudian, kami mencipta pemberi maklumat menggunakan NewInformer dan menyediakan senarai pengendali acara untuk mengendalikan acara yang berbeza (tambah, padam, kemas kini). Dalam pengendali acara, kami mencetak mesej yang sesuai apabila perkhidmatan ditambah, dipadamkan atau dikemas kini. Akhirnya, kami memulakan jam tangan dengan menjalankan pengawal dalam goroutine. Kod ini akan terus memantau acara perkhidmatan dan mencetak butiran sebarang perubahan.
Atas ialah kandungan terperinci Bagaimana untuk Memantau Acara Perkhidmatan Kubernetes Menggunakan Klien Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!