Strategi rekonsiliasi
Dengan konfigurasi deklaratif, Anda menentukan status sistem yang diinginkan. Tujuan sistem kemudian bekerja secara konstan untuk sedekat mungkin dengan status ini. Lihat Pengelolaan deklaratif objek Kubernetes menggunakan file konfigurasi untuk informasi selengkapnya.
Dengan Config Connector, Anda dapat membuat dan memperbarui sumber daya dalam urutan apa pun, terlepas dari hubungan dependensi. GKE memindahkan objek yang dideklarasikan konfigurasi menuju konsistensi pada akhirnya dengan status yang diinginkan.
Misalnya, jika Anda membuat PubSubSubscription
sebelum string yang sesuai
PubSubTopic
, Config Connector menunggu hingga topik dibuat sebelum
membuat langganan terkait.
Durasi penginstalan Config Connector Anda tetap tidak konsisten bergantung pada
jumlah dan jenis resource yang dikelolanya. Perubahan pada GKE
cluster biasanya dijalankan
dalam hitungan detik. Namun, sekarang
waktu untuk membuat
Resource Google Cloud dapat bervariasi berdasarkan jenis resource. Sebagai
misalnya, satu PubSubTopic
memerlukan waktu beberapa detik untuk dibuat. Google Cloud
resource tidak mencapai konsistensi hingga dibuat. Misalnya, ketika
membuat SQLInstance
dan SQLDatabase
, sistem tidak konsisten untuk
per menit saat {i>database<i} dibuat.
GKE dan Config Connector merekonsiliasi setiap resource dengan memperbarui atau setelah periode jitter dengan rata-rata berdasarkan default yang telah dikonfigurasi sebelumnya dengan interval waktu tertentu. Anda dapat menemukan interval default di "Rata-Rata Default Config Connector Rekonsiliasi Interval Dalam Detik" dari setiap halaman referensi resource. Untuk link ke setiap referensi, lihat Ringkasan referensi. Bila terdapat terjadi error dalam rekonsiliasi, Config Connector mencoba kembali dengan backoff eksponensial backoff maksimum adalah dua menit. Anda dapat melihat error di Peristiwa dari resource tertentu.
Mengonfigurasi interval rekonsiliasi
Mulai dari Config Connector 1.102, Anda dapat mengonfigurasi interval rekonsiliasi rata-rata untuk resource yang dikelola oleh Config Connector dengan anotasi cnrm.cloud.google.com/reconcile-interval-in-seconds
. Nilai anotasi menimpa nilai default "Config Connector Rata-Rata Default
Rekonsiliasi Interval Dalam Detik" dari referensi resource
kami.
Nilai anotasi harus berupa bilangan bulat non-negatif yang mewakili waktu dalam detik. Jika nilai ditetapkan ke 0, Config Connector akan berhenti memulai rekonsiliasi untuk resource setelah mencapai status UpToDate.
Misalnya, jika Anda ingin Config Connector lebih jarang merekonsiliasi resource agar tidak mengganggu layanan Google Cloud yang mendasarinya Masalah kuota API, Anda dapat menetapkan nilai interval rekonsiliasi rata-rata ke 1 jam.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Jika Anda ingin Config Connector lebih sering merekonsiliasi resource untuk memperbaiki penyimpangan lebih cepat, Anda dapat menyetel anotasi dengan nilai yang kecil.
Anda dapat menganotasi semua resource jenis tertentu yang memiliki Jenis Versi Grup (GVK) yang sama dengan skrip berikut:
#!/bin/bash
KIND=RESOURCE_KIND
NAMESPACE=RESOURCE_NAMESPACE
ANNOTATION_KEY="cnrm.cloud.google.com/reconcile-interval-in-seconds"
ANNOTATION_VALUE=RECONCILE_INTERVAL
kubectl annotate --overwrite --all ${KIND} ${ANNOTATION_KEY}=${ANNOTATION_VALUE} -n ${NAMESPACE}
echo "Annotation added to all ${KIND} RESOURCE"
Ganti kode berikut:
RESOURCE_KIND
: jenis resource yang ingin diberi anotasi.RESOURCE_NAMESPACE
: namespace yang berisi resource yang ingin diberi anotasi.RECONCILE_INTERVAL
: interval rekonsiliasi dalam detik.
Anda dapat menetapkan interval rekonsiliasi ke 0 untuk menonaktifkan koreksi penyimpangan untuk resource, tetapi tindakan ini tidak menonaktifkan aktuasi resource. Jika Anda membuat perubahan pada resource Spec
, resource tersebut akan direkonsiliasi lagi.
Menyetel interval rekonsiliasi ke 0 tidak dapat dibatalkan. Artinya, mengubah nilai kembali ke angka bukan nol tidak akan membuat Config Connector merekonsiliasi resource lagi.
Jika ingin mengembalikan interval rekonsiliasi 0, Anda memiliki opsi berikut:
- Ubah spesifikasi resource dengan nilai interval rekonsiliasi untuk mengaktifkan rekonsiliasi baru.
- Abaikan resource dengan menyetel anotasi
cnrm.cloud.google.com/deletion-policy: "abandon"
dan buat ulang resource dengan nilai interval rekonsiliasi selain 0.
Kolom yang dapat berubah, tetapi tidak dapat dibaca, hanya diaktifkan berdasarkan perubahan
Beberapa API mengekspos kolom yang tidak dapat dibaca, tetapi dapat diubah (misalnya, {i>password<i} untuk pengguna SQL). Karena ketidakmampuan untuk melihat apakah bidang ini telah yang dapat diubah, tetapi tidak dapat dibaca, diperbarui hanya ketika diubah.
Resource tidak dibuat ulang saat mengubah kolom yang tidak dapat diubah
Beberapa kolom dalam resource tidak dapat diubah dan tidak dapat direkonsiliasi tanpa menghapus, lalu membuat ulang resource target.
Dalam situasi ini, Config Connector akan memunculkan pesan "UpdatedFailed" Peristiwa Kubernetes untuk resource tersebut daripada melakukan pembuatan ulang ini. Anda kemudian harus menghapus dan membuat ulang sumber daya.
Contoh peristiwa:
Warning UpdateFailed 37m (x643 over 15d) computeinstance-controller Update call failed: the desired mutation for the following field(s) is invalid: [bootDisk.0.InitializeParams.0.Image networkInterface.0.NetworkIp]