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 normalerweise innerhalb von Sekunden ausgeführt. Die Erstellung von Google Cloud-Ressourcen kann jedoch je nach Ressourcentyp variieren. Zum Erstellen eines einzelnen PubSubTopic-Elements dauert es beispielsweise Sekunden. Google Cloud-Ressourcen erreichen Konsistenz erst, wenn sie erstellt werden. Wenn du beispielsweise SQLInstance und SQLDatabase erstellst, ist das System während der Erstellung der Datenbank über einen Zeitraum von mehreren Minuten nicht konsistent.

GKE und Config Connector gleichen jede Ressource mit jedem Update oder nach einem Jitterzeitraum mit durchschnittlich 10 Minuten ab. Wenn ein Fehler beim Abgleich auftritt, wiederholt Config Connector den exponentiellen Backoff und beträgt dabei maximal zwei Minuten. In den Ereignissen einer bestimmten Ressource können Sie sich alle Fehler ansehen.

Änderbare, aber nicht lesbare Felder werden nur bei Änderungen berücksichtigt

Einige APIs stellen Felder bereit, die nicht lesbar, aber änderbar sind, z. B. das Passwort für einen SQL-Nutzer. Weil nicht sichtbar ist, ob diese Felder geändert wurden, werden änderbare, aber nicht lesbare Felder nur aktualisiert, wenn die benutzerdefinierte Ressource geändert wird.

Ressourcen werden bei Änderungen von unveränderlichen Feldern 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 sendet Config Connector das Kubernetes-Ereignis „FailedFailed“ und „Kubernetes“ für die Ressource aus, anstatt diese Neuerstellung durchzuführen. 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]