editor php Youzi membawakan anda perkongsian teknologi terkini: Artikel ini akan menyelidiki cara menyesuaikan kemas kini status pengawal Kubernetes di golang. Sebagai enjin orkestrasi kontena sumber terbuka, Kubernetes telah menjadi pilihan popular untuk pembangunan aplikasi asli awan. Pengawal ialah salah satu komponen teras dalam Kubernetes dan digunakan untuk mengurus keadaan aplikasi. Memahami cara menyesuaikan kemas kini status pengawal akan membantu pembangun memahami fleksibiliti dan kebolehskalaan Kubernetes dengan lebih baik. Dalam artikel ini, kami akan memperkenalkan konsep berkaitan dan menyediakan contoh kod terperinci untuk membantu pembaca bermula dengan cepat. Nantikan!
Saya sedang membina pengendali go kubernetes. Saya menggunakan kubebuilder untuk menciptanya. Saya ingin menyimpan beberapa butiran dalaman dalam keadaan crd. Saya telah mencuba:
if err = r.client.update(ctx, upcrd); err != nil { return ctrl.result{}, client.ignorenotfound(err) }
if err = r.status().update(ctx, upcrd); err != nil { return reconcile.result{}, client.ignorenotfound(err) }
Struktur keadaan ditakrifkan seperti berikut:
type HAAuditStatus struct { ChaosStrategyCron cron.EntryID `json:"chaosStrategyCron,omitempty"` TestStatus TestStatus `json:"testStatus,omitempty"` MetricStatus MetricStatus `json:"metricStatus,omitempty"` RoundRobinStrategy RoundRobinStrategy `json:"roundRobinStrategy,omitempty"` FixedStrategy FixedStrategy `json:"fixedStrategy,omitempty"` NextChaosDateTime int64 `json:"nextChaosDateTime,omitempty"` Created bool `json:"created,default=false"` }
Tiada ralat dilemparkan, dan medan spesifikasi yang diubah suai sebenarnya dikekalkan, tetapi medan status tidak dan nilainya kekal pada nilai lalainya dalam langkah penyesuaian seterusnya. Saya melihat soalan lain pada github atau stackoverflow dan sebarang cadangan yang timbul menyelesaikan masalah saya tetapi saya tidak dapat mengetahui masalahnya. Untuk mendapatkan pemahaman yang lebih mendalam, anda boleh merujuk kepada repositori tempat pengendali berada.
Sebarang cadangan amat dialu-alukan :)
Saya mungkin telah menemui sebab mengapa status tidak dikemas kini.
Sebelum mengemas kini status, saya juga mengemas kini medan kanonik (untuk memberikan maklum balas kepada pengguna tentang sumber yang dicipta).
Isu ini disebabkan oleh kemas kini spesifikasi yang mencetuskan penyesuaian baharu, dan arahan yang dikemas kini ini (yang termasuk kemas kini status) tidak dilaksanakan.
Saya sedar bahawa menggunakan spesifikasi untuk memberikan maklum balas kepada pengguna adalah tidak sesuai dan acara lebih sesuai untuk tujuan ini.
Atas ialah kandungan terperinci Kemas kini status pengawal Kubernetes tersuai dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!