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.

Vorbereitung

Zur Verwendung der Befehle in diesem Dokument benötigen Sie die folgenden Kubernetes-RBAC-Berechtigungen in den config-management-system-Namespaces 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 Single Source of Truth. Er zeigt Ihnen, wie Sie die Synchronisierung schnell beenden 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 die folgenden Befehle aus, die hier zwar als ein einziger Befehl angegeben sind, die aber auch separat ausgeführt werden können:

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

Die Befehle führen nacheinander folgende Schritte aus. Wenn ein Befehl fehlschlägt, werden die verbleibenden Befehle nicht ausgeführt.

  1. Reduzieren Sie die replicas-Anzahl in der Config Management Operator-Bereitstellung auf 0.
  2. Reduzieren Sie 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 des Operators oder eines der für die Synchronisierung erforderlichen Prozesse verfügbar. Daher werden Konfigurationen nicht vom Source of Truth synchronisiert.

Prüfen Sie mit dem folgenden Befehl, ob alle Prozesse angehalten 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 config-management-operator --replicas=1

Mit diesem Befehl wird das Operator-Deployment auf ein Replikat skaliert. Der Operator bemerkt dann, 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 mehr als einer "Source of Truth" anhalten und fortsetzen

Der Abschnitt bezieht sich auf mehr als eine "Source of Truth" und zeigt Ihnen, wie Sie die Synchronisierung aus mehreren Quellen 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 mehr als einer "Source of Truth" stoppen können, hängt davon ab, welche Konfigurationsmethode verwendet wurde, als Sie die Synchronisierung aus mehreren Quellen 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" 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 -n config-management-system scale deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator --timeout=60s \
&& kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager

Die Befehle führen nacheinander folgende Schritte aus. Wenn ein Befehl fehlschlägt, werden die verbleibenden Befehle nicht ausgeführt.

  1. Reduzieren Sie die replicas-Anzahl in der Config Management Operator-Bereitstellung auf 0.
  2. Reduzieren Sie die replicas-Anzahl in der Reconciler Manager-Bereitstellung auf 0.

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" beenden

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 Namespace-bezogener 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 "Sources of Truth" fortsetzen

Führen Sie den folgenden Befehl aus, um die Synchronisierung aus allen "Source of Truth" fortzusetzen:

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Mit diesem Befehl wird das Operator-Deployment auf ein Replikat skaliert. Der Operator stellt dann fest, dass die Reconciler Manager-Bereitstellung falsch skaliert ist, und skaliert sie auf die entsprechende Replikatanzahl. Letztendlich skaliert der Reconciler Manager den Root-Reconciler und die Namespace-Reconciler auf die entsprechende Replikatanzahl.

Nächste Schritte