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

Kemas kini status pengawal Kubernetes tersuai dalam golang

王林
王林ke hadapan
2024-02-11 08:57:08347semak imbas

更新 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)
}
  • Dan hanya kemas kini status:
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 :)

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam