Bilakah Anda Harus Menggunakan watch.Interface, cache.NewInformer atau cache.NewSharedIndexInformer dalam Kubernetes?

Linda Hamilton
Lepaskan: 2024-11-11 19:56:03
asal
602 orang telah melayarinya

When Should You Use watch.Interface, cache.NewInformer, or cache.NewSharedIndexInformer in Kubernetes?

tonton.Interface vs. cache.NewInformer vs. cache.NewSharedIndexInformer

Apabila memantau sumber dalam Kubernetes dan bertindak balas terhadap perubahan, pembangun mempunyai pelbagai pilihan yang tersedia untuk mereka. Memahami perbezaan antara kaedah ini adalah penting.

watch.Interface

Jam tangan.Antaramuka yang diperoleh melalui kaedah seperti rest.Request.Watch() menyediakan ResultChan yang mengalir peristiwa (Ditambah/Diubahsuai/Dipadam) perubahan sumber. Ia menawarkan abstraksi peringkat rendah dan hanya menyediakan keadaan "selepas" sumber.

cache.NewInformer

Fungsi cache.NewInformer membolehkan anda menentukan ResourceEventHandler yang mengendalikan panggilan OnAdd()/OnUpdate()/OnDelete(). Ia termasuk mekanisme untuk menerima kedua-dua keadaan "sebelum" dan "selepas" sumber. Secara dalaman, NewInformer menggunakan watch.Interface melalui NewListWatchFromClient.

cache.NewSharedInformer vs. cache.NewSharedIndexInformer

Fungsi ini menyediakan tahap abstraksi yang lebih tinggi daripada NewInformer. Mereka menggunakan sambungan berkongsi ke pelayan API dan berkongsi sumber di kalangan pemberi maklumat. cache.NewSharedIndexInformer juga menambahkan pengindeksan pada cache data.

Pengesyoran

Untuk kebanyakan kes penggunaan, SharedInformers disyorkan berbanding abstraksi peringkat rendah. SharedInformers berkongsi sumber dan menyediakan tahap abstraksi yang lebih tinggi, memudahkan banyak tugas peringkat rendah. Apabila bekerja dengan set data yang besar, SharedIndexInformers diutamakan kerana keupayaan pengindeksan mereka.

Segera SharedInformers daripada SharedInformerFactory yang sama untuk berkongsi sumber dengan cekap. Contoh ditunjukkan di bawah:

informerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30)

podInformer := informerFactory.Core().V1().Pods()
serviceInformer := informerFactory.Core().V1().Services()

podInformer.Informer().AddEventHandler(
  // Add event handling 
)
// Add event handling for serviceInformer

informerFactory.Start(wait.NeverStop)
informerFactory.WaitForCacheSync(wait.NeverStop)
Salin selepas log masuk

Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan watch.Interface, cache.NewInformer atau cache.NewSharedIndexInformer dalam Kubernetes?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan