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. Die Dauer, bisGoogle Cloud -Ressourcen erstellt werden, 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 Mittelwert ab, der auf dem vorkonfigurierten Standardintervall basiert. Das Standardintervall finden Sie auf der Referenzseite der jeweiligen Ressource unter „Config Connector Default Average Reconcile Interval In Seconds“ (Standard-Durchschnittliches Config Connector-Abgleichsintervall in Sekunden). Links zu den einzelnen Ressourcen finden Sie in der Ressourcenübersicht. Tritt beim Abgleich ein Fehler auf, 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 Abgleichintervall für vom Config Connector verwaltete Ressourcen mit der Anmerkung cnrm.cloud.google.com/reconcile-interval-in-seconds
konfigurieren. Der Wert der Anmerkung überschreibt den Standardwert „Config Connector Default Average Reconcile Interval In Seconds“ (Standardwert für das durchschnittliche Config Connector-Abgleichsintervall in Sekunden) auf der Seite Referenz für Ressourcen.
Der Wert der Anmerkung sollte eine positive Ganzzahl sein, die die Zeit in Sekunden angibt. Wenn der Wert auf „0“ festgelegt ist, startet Config Connector keine Abgleiche mehr für die Ressource, sobald der Status UpToDate erreicht ist.
Wenn Sie beispielsweise möchten, dass Config Connector eine Ressource seltener abgleicht, um zugrunde liegende Google Cloud API-Kontingentprobleme zu vermeiden, können Sie das durchschnittliche Intervall für den Abgleich auf 1 Stunde festlegen.
cnrm.cloud.google.com/reconcile-interval-in-seconds: "3600"
Wenn Config Connector eine Ressource häufiger abgleichen und Abweichungen schneller korrigieren soll, können Sie die Anmerkung mit einem kleinen Wert festlegen.
Mit dem folgenden Script können Sie alle Ressourcen eines bestimmten Typs mit derselben Gruppenversionsart (Group Version Kind, GVK) annotieren:
#!/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
: die Art der Ressource, die Sie annotieren möchten.RESOURCE_NAMESPACE
: Der Namespace, der die Ressourcen enthält, die Sie annotieren möchten.RECONCILE_INTERVAL
: das Intervall für die Abgleiche in Sekunden.
Sie können das Intervall für die Abgleichung auf „0“ festlegen, um die Abweichungskorrektur für eine Ressource zu deaktivieren. Die Aktivierung der Ressource wird dadurch jedoch nicht deaktiviert. Wenn Sie Änderungen an der Ressource Spec
vornehmen, wird die Ressource noch einmal abgeglichen.
Das Festlegen des Intervalls für die Abgleiche auf 0 ist nicht rückgängig zu machen. Das bedeutet, dass Config Connector die Ressource nicht noch einmal abgleicht, wenn Sie den Wert wieder in einen Wert ungleich null ändern.
Wenn Sie das Intervall für die Abgleiche auf „0“ zurücksetzen möchten, haben Sie folgende Möglichkeiten:
- Ändern Sie die Ressourcenspezifikation mit dem Wert für das Abgleichintervall, um neue Abgleiche zu ermöglichen.
- Verwerfen Sie die Ressource, indem Sie die Anmerkung
cnrm.cloud.google.com/deletion-policy: "abandon"
festlegen, und erstellen Sie sie dann mit einem anderen Wert für das Abgleichintervall 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 dann die Ressource 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]