Synchronisierung von Konfigurationen anhalten und fortsetzen

In einigen Situationen müssen Sie Config Sync möglicherweise schnell daran hindern, Konfigurationen aus Ihrer Source of Truth zu synchronisieren. Ein solches Szenario wäre, wenn jemand eine syntaktisch gültige, aber falsche Konfiguration an das Quelle sendet und Sie deren Auswirkungen auf Ihre laufenden Cluster einschränken möchten, während die Konfiguration entfernt oder korrigiert wird.

Diese Seite richtet sich an IT-Administratoren und ‑Betreiber, die den Lebenszyklus der zugrunde liegenden technischen Infrastruktur verwalten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Google Cloud -Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.

Bei Clustern mit Config Sync-Version 1.20.0 und höher oder bei Clustern, für die automatische Upgrades aktiviert sind, wird der ConfigManagement-Operator nicht auf Ihrem Cluster ausgeführt. Sie müssen die Synchronisierung nicht manuell beenden, indem Sie die Schritte auf dieser Seite ausführen. Stattdessen können Sie das Feld spec.configSync.stopSyncing der gcloud CLI verwenden, indem Sie true in Ihrer Config Sync-Konfigurationsdatei festlegen. Wenn Sie die Synchronisierung fortsetzen möchten, setzen Sie das Feld auf false.

Wenn Sie Config Sync manuell mit kubectl installiert haben, können Sie das Feld stopSyncing nicht verwenden. In diesem Fall können Sie die Synchronisierung manuell beenden. Folgen Sie dazu der Anleitung auf dieser Seite. Die manuellen Schritte hängen davon ab, welche Version von Config Sync auf Ihren Clustern installiert ist.

Vorbereitung

Wenn Sie die Befehle in diesem Dokument verwenden möchten, benötigen Sie die folgenden Kubernetes-RBAC-Berechtigungen in den Namespaces config-management-system für alle Cluster, in denen Sie die Synchronisierung anhalten möchten:

- apiGroups: ["extensions"]
  resources: ["deployments", "deployments/scale"]
  verbs: ["get", "update"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "watch"]

Synchronisierung aus einer Source of Truth anhalten und fortsetzen

Dieser Abschnitt bezieht sich auf eine einzelne Source of Truth. Er zeigt Ihnen, wie Sie die Synchronisierung schnell anhalten und die Synchronisierung fortsetzen können, wenn das Problem behoben wurde. Weitere Informationen zum Anhalten der Synchronisierung für mehreren Quellen der Wahrheit finden Sie unter Synchronisierung aus mehreren Quellen anhalten und fortsetzen.

Synchronisierung anhalten

Wenn Sie die Synchronisierung für einen einzelnen Cluster anhalten möchten, führen Sie den folgenden Befehl aus:

kubectl scale -n config-management-system deployment --replicas=0 --all \
&& kubectl wait -n config-management-system --for=delete pods --all

Die Befehle reduzieren die replicas-Anzahl aller Deployments, die im Namespace config-management-system ausgeführt werden, auf 0. Die genaue Gruppe von betroffenen Deployments ist je nach Produktversion unterschiedlich.

Alle Bereitstellungen befinden sich noch im Cluster, aber es sind keine Replikate der für die Synchronisierung verantwortlichen Prozesse verfügbar. Daher werden Konfigurationen nicht vom Source of Truth synchronisiert.

Prüfen Sie mit dem folgenden Befehl, ob alle Prozesse beendet wurden, und ob alle Deployments null Replikate haben:

kubectl get -n config-management-system deployment

Wenn Sie die Synchronisierung für mehrere Cluster anhalten möchten, führen Sie die vorherigen Befehle für jeden Cluster aus.

Synchronisierung fortsetzen

Führen Sie den folgenden Befehl aus, um die Synchronisierung für einen einzelnen Cluster fortzusetzen:

kubectl -n config-management-system scale deployment reconciler-manager --replicas=1

Mit diesem Befehl wird das Reconciler Manager-Deployment auf ein Replikat skaliert. Der Reconciler Manager stellt dann fest, dass die Pods in den config-management-system-Namespace-Deployments falsch skaliert wurden, und skaliert sie mit der entsprechenden Anzahl der Replikate.

Wenn Sie die Synchronisierung für mehrere Cluster fortsetzen möchten, führen Sie für jeden Cluster den vorherigen Befehl aus.

Synchronisierung aus mehreren Quellen anhalten und fortsetzen

Der Abschnitt bezieht sich auf mehrere Quellen der Wahrheit und zeigt Ihnen, wie Sie die Synchronisierung aus mehreren Quellen der Wahrheit vorübergehend anhalten und fortsetzen können. Weitere Informationen wie Sie Synchronisierung für eine Source of Truth anhalten können, finden Sie unter Synchronisierung aus einer „Source of Truth“ anhalten und fortsetzen.

Nur ein zentraler Administrator kann die Synchronisierung in der Root Source of Truth anhalten.

Ob Sie die Synchronisierung in mehreren Quellen der Wahrheit stoppen können, hängt davon ab, welche Konfigurationsmethode verwendet wurde, als Sie die Synchronisierung aus mehreren Quellen der Wahrheit eingerichtet haben:

  • Wenn die Methode Quellen in einer Root Source of Truth steuern verwendet wurde, ist ein zentraler Administrator der einzige, der die Synchronisierung stoppen und wieder aufnehmen kann.

  • Wenn die Methode Source of Truth mit der Kubernetes API steuern verwendet wurde, können Anwendungsoperatoren die Synchronisierung aus den Namespace-bezogenen „Sources of Truth“, in denen sie arbeiten, beenden und wieder aufnehmen.

Synchronisierung anhalten

In den folgenden Abschnitten wird gezeigt, wie Sie die Synchronisierung für die "Root Source of Truth" und die Namespace-bezogenen "Source of Truth" beenden. Wenn Sie verhindern möchten, dass der Reconciler Manager die Änderung rückgängig macht, müssen Sie ihn zuerst durch Ausführung der folgenden Befehle beenden:

kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager

Mit diesen Befehlen wird die replicas-Anzahl in der Reconciler Manager-Bereitstellung auf 0 reduziert.

Synchronisierung aus der Root Source of Truth anhalten

Um die Synchronisierung eines Clusters aus der Root Source of Truth zu stoppen, kann ein zentraler Administrator den folgenden Befehl ausführen:

kubectl -n config-management-system scale deployment root-reconciler --replicas=0

Mit diesem Befehl wird die replicas-Anzahl in der Bereitstellung root-reconciler auf 0 reduziert.

Wenn Sie die Synchronisierung für mehrere Cluster beenden möchten, führen Sie für jeden Cluster den vorherigen Befehl aus.

Synchronisierung aus Namespace-bezogener „Source of Truth“ beenden

Wählen Sie den Tab Root Source of Truth-Methode oder Kubernetes API-Methode aus, um die entsprechenden Anleitungen aufzurufen.

Root Source of Truth-Methode

Wenn die Methode Namespace-„Sources of Truth“ in der Root Source of Truth steuern verwendet wurde, können zentrale Administratoren die folgenden Befehle ausführen, um die Clustersynchronisierung aus einer Namespace „Source of Truth“ zu stoppen:

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0

Der Befehl reduziert die Replikatzahl in der Bereitstellung ns-reconciler-NAMESPACE auf 0.

Wenn Sie die Synchronisierung für mehrere Cluster beenden möchten, führen Sie für jeden Cluster den vorherigen Befehl aus.

Kubernetes API-Methode

Wenn die Methode Namespace-bezogenen Sources mit der Kubernetes API steuern verwendet wurde, können Anwendungsoperatoren die Clustersynchronisierung stoppen, wenn Sie die folgenden Befehle ausführen:

  1. Rufen Sie die Konfiguration RepoSync ab und speichern Sie sie, um sie später zu verwenden, wenn Sie die Synchronisierung wieder aufnehmen möchten:

    kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
    

    Ersetzen Sie NAMESPACE durch den Namespace Ihres RepoSync-Objekts.

  2. Löschen Sie die RepoSync-Konfiguration:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Dieser Befehl veranlasst den Reconciler Manager, den Namespace-Reconciler (ns-reconciler-NAMESPACE) aus NAMESPACE zu entfernen und die Synchronisierung zu beenden.

    Wenn Sie die Synchronisierung für mehrere Cluster beenden möchten, führen Sie die vorherigen Befehle für jeden Cluster aus.

Zulassungs-Webhook am Blockieren von Drifts hindern (optional)

Der Config Sync-Zulassungs-Webhook ist standardmäßig deaktiviert. Sie können die vom Zulassungs-Webhook bereitgestellte Drift-Präventionsfunktion mit der Google Cloud CLI oder kubectl aktivieren und deaktivieren.

Synchronisierung aus allen „Source of Truth“-Quellen anhalten

Führen Sie die folgenden Befehle aus, um die Synchronisierung aus allen „Source of Truth“-Quellen anzuhalten, einschließlich der Stamm-Source of Truth und der Namespace-bezogenen Quellen:

kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler

Die Befehle reduzieren die replicas-Anzahl aller Reconciler-Pods, die im Namespace config-management-system ausgeführt werden, auf 0 und warten, bis alle Reconciler-Pods gelöscht wurden.

Alle Reconciler-Bereitstellungen befinden sich noch im Cluster, aber es sind keine Replikate der Reconciler oder eines der für die Synchronisierung erforderlichen Prozesse verfügbar. Daher werden Konfigurationen nicht aus dem Source of Truth synchronisiert.

Synchronisierung fortsetzen

In diesem Abschnitt erfahren Sie, wie Sie die Synchronisierung für die Root Source of Truth und für namespace-bezogene Quellen fortsetzen.

Synchronisierung aus der Root Source of Truth fortsetzen

Um die Synchronisierung aus einer Root Source of Truth fortzusetzen, kann ein zentraler Administrator den folgenden Befehl ausführen:

kubectl -n config-management-system scale deployment root-reconciler --replicas=1

Mit diesem Befehl wird das root-reconciler-Deployment auf ein Replikat skaliert.

Synchronisierung aus einer Namespace-bezogenen Quelle fortsetzen

Wählen Sie den Tab Root Source of Truth-Methode oder Kubernetes API-Methode aus, um die entsprechenden Anleitungen aufzurufen.

Root Source of Truth-Methode

Wenn Sie die Methode Namespace-bezogene Quellen in einer Root Source of Truth steuern verwendet haben, kann ein zentraler Administrator den folgenden Befehl ausführen:

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1

Mit diesem Befehl wird das Deployment ns-reconciler-NAMESPACE auf ein Replikat skaliert.

Kubernetes API-Methode

Wenn Sie die Methode Namespace-bezogene Quellen mit der Kubernetes API steuern verwenden, setzen Anwendungsoperatoren die Synchronisierung fort, indem Sie repo-sync.yaml, das die Konfiguration RepoSync enthält, neu anwenden:

kubectl apply -f repo-sync.yaml

Dieser Befehl löst den Reconciler Manager von tne aus, um einen Namespace-Reconciler-Ablauf und ein ns-reconciler-NAMESPACE-Deployment zu erstellen.

Zulassungs-Webhook aktivieren und deaktivieren

Der Config Sync-Zulassungs-Webhook ist standardmäßig deaktiviert. Sie können die vom Zulassungs-Webhook bereitgestellte Drift-Präventionsfunktion mit der Google Cloud CLI oder kubectl aktivieren und deaktivieren.

Synchronisierung aus allen „Source of Truth“-Quellen fortsetzen

Führen Sie den folgenden Befehl aus, um die Synchronisierung fortzusetzen:

kubectl -n config-management-system scale deployment reconciler-manager --replicas=1

Mit diesem Befehl wird das Reconciler Manager-Deployment auf ein Replikat skaliert. Der Reconciler Manager skaliert dann den Root-Reconciler und die Namespace-Reconciler auf die entsprechende Replikatanzahl.

Nächste Schritte