Abgleichsstrategie
Bei der deklarativen Konfiguration definieren Sie den gewünschten Status des Systems. Das System versucht dann kontinuierlich, diesen Status so weit wie möglich zu gewährleisten. Weitere Informationen finden Sie unter Deklarative Verwaltung von Kubernetes-Objekten mithilfe von Konfigurationsdateien.
Mit Config Connector können Sie Ressourcen unabhängig von Abhängigkeitsbeziehungen in beliebiger Reihenfolge erstellen und aktualisieren. GKE verschiebt Ihre deklarierte Konfiguration in Richtung Eventual Consistency mit dem gewünschten Status.
Wenn Sie beispielsweise eine PubSubSubscription
vor der entsprechenden PubSubTopic
erstellen, wartet Config Connector, bis das Thema erstellt wurde, bevor Sie das zugehörige Abo erstellen.
Wie lange Ihre Config Connector-Installation inkonsistent bleibt, hängt von der Anzahl und der Art der verwalteten Ressourcen ab. Änderungen an einem GKE-Cluster werden in der Regel in Sekunden ausgeführt. Der Zeitraum zum Erstellen vonGoogle Cloud -Ressourcen kann jedoch je nach Ressourcentyp variieren. Beispielsweise dauert das Erstellen eines einzelnen PubSubTopic
Sekunden. Google Cloud-Ressourcen erreichen erst Konsistenz, wenn sie erstellt sind. Wenn Sie beispielsweise eine SQLInstance
und eine SQLDatabase
erstellen, ist das System für Minuten inkonsistent, während die Datenbank erstellt wird.
GKE und Config Connector gleichen Ressourcen bei jeder Aktualisierung oder nach einer Jitterperiode mit einem Durchschnitt basierend auf dem vorkonfigurierten Standardintervall ab. Das Standardintervall finden Sie auf der Referenzseite der jeweiligen Ressource unter „Config Connector Default Average Reconcile Interval In Seconds“ (Standardmäßiges durchschnittliches Config Connector-Abstimmungsintervall in Sekunden). Links zu den einzelnen Ressourcen finden Sie in der Ressourcenübersicht. Wenn beim Abgleich ein Fehler auftritt, wird Config Connector mit einem exponentiellen Backoff wiederholt, wobei der maximale Backoff zwei Minuten beträgt. Sie können alle Fehler in den Ereignissen einer bestimmten Ressource aufrufen.
Abgleichsintervall konfigurieren
Ab Config Connector 1.102 können Sie das durchschnittliche Abgleichsintervall für Ressourcen, die von Config Connector verwaltet werden, mit der Annotation cnrm.cloud.google.com/reconcile-interval-in-seconds
konfigurieren. Der Wert der Annotation überschreibt den Standardwert von „Config Connector Default Average Reconcile Interval In Seconds“ auf der Seite Ressourcenreferenz.
Der Wert der Anmerkung muss eine nicht negative Ganzzahl sein, die die Zeit in Sekunden angibt. Wenn der Wert auf 0 gesetzt ist, initiiert Config Connector keine Abgleichsvorgänge mehr für die Ressource, sobald sie den Status UpToDate erreicht hat.
Wenn Sie beispielsweise möchten, dass Config Connector eine Ressource seltener abgleicht, um Probleme mit dem zugrunde liegenden Google Cloud API-Kontingent zu vermeiden, können Sie den Wert für das durchschnittliche Abgleichsintervall auf 1 Stunde festlegen.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Wenn Sie möchten, dass Config Connector eine Ressource häufiger abgleicht, um Abweichungen schneller zu korrigieren, können Sie die Annotation mit einem kleinen Wert festlegen.
Mit dem folgenden Skript können Sie alle Ressourcen eines bestimmten Typs, die dieselbe Group Version Kind (GVK) haben, mit Anmerkungen versehen:
#!/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"
Ersetzen Sie Folgendes:
RESOURCE_KIND
: Der Ressourcentyp, den Sie mit Anmerkungen versehen möchten.RESOURCE_NAMESPACE
: Der Namespace, der die Ressourcen enthält, die Sie mit Anmerkungen versehen möchten.RECONCILE_INTERVAL
: Das Abstimmungsintervall in Sekunden.
Sie können das Abgleichsintervall auf 0 setzen, um die Driftkorrektur für eine Ressource zu deaktivieren. Dadurch wird die Ressourcenaktivierung jedoch nicht deaktiviert. Wenn Sie Änderungen an der Ressource Spec
vornehmen, wird die Ressource noch einmal abgeglichen.
Das Abstimmungsintervall kann nicht mehr geändert werden, wenn es auf 0 gesetzt wurde. Wenn Sie den Wert wieder in eine Zahl ungleich null ändern, wird die Ressource nicht noch einmal von Config Connector abgeglichen.
Wenn Sie das Abstimmungsintervall von 0 Tagen rückgängig machen möchten, haben Sie folgende Möglichkeiten:
- Ändern Sie die Ressourcenspezifikation mit dem Wert für das Abgleichsintervall, um neue Abgleiche zu ermöglichen.
- Geben Sie die Ressource auf, indem Sie die Annotation
cnrm.cloud.google.com/deletion-policy: "abandon"
festlegen, und erstellen Sie die Ressource mit einem anderen Abgleichsintervallwert als 0 neu.
Änderbare, aber nicht lesbare Felder werden nur bei Änderungen berücksichtigt
Einige APIs enthalten nicht lesbare Felder, die jedoch geändert werden können (z. B. das Passwort für einen SQL-Nutzer). Da nicht ausgelesen werden kann, ob diese Felder geändert wurden, werden änderbare, aber nicht lesbare Felder nur aktualisiert, wenn die benutzerdefinierte Ressource geändert wird.
Ressourcen werden bei der Änderung unveränderlicher Felder nicht neu erstellt
Einige Felder in einer Ressource sind unveränderlich und können nicht abgeglichen werden, ohne die Zielressource zu löschen und anschließend neu zu erstellen.
In diesen Fällen gibt der Config Connector das Kubernetes-Ereignis „UpdatedFailed“ für die Ressource aus, anstatt diesen Vorgang neu zu erstellen. Sie müssen die Ressource dann löschen und neu erstellen.
Beispielereignis:
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]