Rumah > pembangunan bahagian belakang > Golang > Kemas kini status pengawal Kubernetes tersuai dalam golang

Kemas kini status pengawal Kubernetes tersuai dalam golang

王林
Lepaskan: 2024-02-11 08:57:08
ke hadapan
419 orang telah melayarinya

更新 golang 中自定义 Kubernetes 控制器的状态

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!

Kandungan soalan

Saya sedang membina pengendali go kubernetes. Saya menggunakan kubebuilder untuk menciptanya. Saya ingin menyimpan beberapa butiran dalaman dalam keadaan crd. Saya telah mencuba:

  • Kemas kini keseluruhan sumber:
if err = r.client.update(ctx, upcrd); err != nil {
    return ctrl.result{}, client.ignorenotfound(err)
}
Salin selepas log masuk
  • Dan hanya kemas kini status:
if err = r.status().update(ctx, upcrd); err != nil {
    return reconcile.result{}, client.ignorenotfound(err)
}
Salin selepas log masuk

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"`
}
Salin selepas log masuk

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 :)

Penyelesaian

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!

Label berkaitan:
sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan