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]