RootSync- und RepoSync-Objekte überwachen

Auf dieser Seite werden verschiedene Möglichkeiten zum Überwachen von RootSync- und RepoSync-Objekten beschrieben. Sie möchten beispielsweise prüfen, ob Ihr letzter Commit in einer Source of Truth auf einen Cluster angewendet und erfolgreich abgeglichen wurde.

Synchronisierte Commits ansehen

Sie können prüfen, welche Commits mit dem Cluster synchronisiert wurden. Dazu prüfen Sie das Feld .status.sync im Objekt RootSync oder RepoSync.

  • Führen Sie den folgenden Befehl aus, um synchronisierte Commits für ein RootSync-Objekt aufzurufen:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Ersetzen Sie ROOT_SYNC_NAME durch den Namen des RootSync-Objekts.

  • Führen Sie den folgenden Befehl aus, um synchronisierte Commits für ein RepoSync-Objekt aufzurufen:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Ersetzen Sie Folgendes:

    • REPO_SYNC_NAME: der Name des RepoSync-Objekts.
    • REPO_SYNC_NAMESPACE: der Namespace, in dem Sie das Namespace-Repository erstellt haben

Die Ausgabe für diese Befehle zeigt den Wert des Quell-Commits und des synchronisierten Commits. Wenn Sie beispielsweise den Befehl für die RepoSync ausgeführt haben, sieht die Ausgabe in etwa so aus:

NAME        RENDERINGCOMMIT                            SOURCECOMMIT                               SYNCCOMMIT
root-sync   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72

Der Wert in der Spalte RENDERINGCOMMIT ist der Commit, der von hydration-controller verarbeitet wird. Wenn kein Rendering erforderlich ist, entspricht der Wert der Spalte SOURCECOMMIT. Der Wert in der Spalte SOURCECOMMIT ist der Commit aus der „Source of Truth“, der mit dem Cluster synchronisiert werden soll. Der Wert in der Spalte SYNCCOMMIT ist der Commit, der aktuell im Cluster bereitgestellt ist. Wenn die beiden Werte in den Spalten SOURCECOMMIT und SYNCCOMMIT identisch sind, wurde das erwartete Commit im Cluster bereitgestellt.

Prüfen, ob Ressourcen im Commit abgeglichen wurden

Da ResourceGroups den Abgleichsstatus der verwalteten Ressourcen erfassen, die in der „Source of Truth“ deklariert sind, können Sie damit feststellen, ob Ressourcen im Commit abgeglichen wurden.

Das ResourceGroup-Objekt hat denselben Namespace und denselben Namen wie das RootSync- oder RepoSync-Objekt. Beispiel: Für das RootSync-Objekt mit dem Namen root-sync im Namespace config-management-system ist das entsprechende ResourceGroup-Objekt auch root-sync im Namespace config-management-system

  • So rufen Sie das ResourceGroup-Objekt für ein RootSync-Objekt ab:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • So rufen Sie das ResourceGroup-Objekt für ein RepoSync-Objekt ab:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Ersetzen Sie Folgendes:

    • ROOT_SYNC_NAME: der Name des ResourceGroup-Objekts, das Sie prüfen möchten.
    • REPO_SYNC_NAME: der Name des ResourceGroup-Objekts, das Sie prüfen möchten.
    • REPO_SYNC_NAMESPACE: der Name des ResourceGroup-Objekts, das Sie prüfen möchten.

Wenn Sie prüfen möchten, ob die Ressourcen im Commit abgeglichen wurden, suchen Sie in der Ausgabe nach Folgendem:

  • .status.observedGeneration entspricht dem Wert des Felds .metadata.generation im ResourceGroup-Objekt.
  • Die Bedingung Stalled hat einen status von "False".
  • Jedes Element unter .status.resourceStatuses hat einen actuation von Succeeded, einen reconcile von Succeeded und einen status von Current.

Fehler ansehen

RootSync- und RepoSync-Objekte verwenden das Feld status, um Fehler zu verfolgen, die beim Synchronisieren der Konfigurationen aus der „Source of Truth“ mit einem Cluster auftreten.

  • Führen Sie den folgenden Befehl aus, um sich den Status eines RootSync-Objekts aufzurufen:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yaml
    

    Ersetzen Sie ROOT_SYNC_NAME durch den Namen des RootSync-Objekts.

  • Führen Sie den folgenden Befehl aus, um sich den Status eines RepoSync-Objekts aufzurufen:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Ersetzen Sie Folgendes:

    • REPO_SYNC_NAME: der Name des RepoSync-Objekts.
    • NAMESPACE: der Namespace, in dem Sie das Namespace-Repository erstellt haben.

Weitere Informationen zu den Unterfeldern des Felds status finden Sie unter Status der Objekte.

Objektdetails ansehen

Wenn Sie Details zu den Objekten RootSync und RepoSync aufrufen und weitere Informationen zu möglichen Fehlern erhalten möchten, verwenden Sie den Befehl kubectl describe.

Die Ausgabe dieses Befehls enthält Ereignisse, die besonders bei der Behebung von Problemen wie Container mit Speichereinschränkungen (OOMKilled), Planungsfehlern oder Image-Pull-Fehlern hilfreich sein können.

Um die Ausgabe in einem besser lesbaren Format zu erhalten, können Sie sie in YAML konvertieren, indem Sie den folgenden Befehlen -o yaml anhängen. Dieses Format ist besonders hilfreich, wenn Sie bestimmte Parameter, Anmerkungen oder Ressourcenspezifikationen untersuchen müssen.

  • Führen Sie den folgenden Befehl aus, um Details zu einem RootSync-Objekt aufzurufen:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    Ersetzen Sie ROOT_SYNC_NAME durch den Namen des RootSync-Objekts.

  • Führen Sie den folgenden Befehl aus, um Details zu einem RepoSync-Objekt aufzurufen:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Ersetzen Sie Folgendes:

    • REPO_SYNC_NAME: der Name des RepoSync-Objekts.
    • NAMESPACE: der Namespace, in dem Sie das Namespace-Repository erstellt haben.

Prüfen, ob eine Ressource bereit ist

Wenn Sie wissen möchten, ob die mit dem Cluster synchronisierten Ressourcen bereit sind, sehen Sie sich den Abgleichsstatus an. Beispielsweise kann durch das Anzeigen des Abgleichsstatus angezeigt werden, ob ein synchronisiertes Deployment zur Verarbeitung von Traffic bereit ist.

Für eine „Source of Truth“, die mit dem Cluster synchronisiert wird, wird der Abgleichsstatus aller Ressourcen in einer Ressource namens ResourceGroup zusammengefasst. Für jedes RootSync- oder RepoSync-Objekt wird eine ResourceGroup generiert, um die Ressourcen zu erfassen, die auf den Cluster angewendet werden, und ihren Status zusammenzufassen.

  • Führen Sie den folgenden Befehl aus, um den Abgleichsstatus für das RootSync-Objekt anzuzeigen:

    kubectl get resourcegroup.kpt.dev ROOT_SYNC_NAME -n config-management-system -o yaml
    

    Ersetzen Sie ROOT_SYNC_NAME durch den Namen des RootSync-Objekts.

  • Führen Sie den folgenden Befehl aus, um den Abgleichsstatus für das RepoSync-Objekt anzuzeigen:

    kubectl get resourcegroup.kpt.dev REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Ersetzen Sie Folgendes:

    • REPO_SYNC_NAME: der Name des RepoSync-Objekts.
    • NAMESPACE: der Namespace, in dem Sie das Namespace-Repository erstellt haben.

In der Ausgabe werden alle Ressourcenstatus der Ressourcengruppen angezeigt. Die folgende Ausgabe zeigt beispielsweise, dass ein Deployment mit dem Namen nginx-deployment bereit ist:

resourceStatuses:
- group: apps
  kind: Deployment
  name: nginx-deployment
  namespace: default
  status: Current

Logs ansehen

Für jedes von Ihnen erstellte RootSync- und RepoSync-Objekt erstellt Config Sync eine Abgleichsbereitstellung, um eine Synchronisierung durchzuführen. In diesem Abschnitt wird erläutert, wie Sie die Logs für diesen Abgleich aufrufen. Das Aufrufen der Logs kann beim Debuggen eines Problems hilfreich sein. Sie enthalten damit zusätzliche Informationen zum Fortschritt, zu Warnungen und zu Fehlern, die über den Objektstatus RootSync und RepoSync hinausgehen.

  • Führen Sie den folgenden Befehl aus, um die Logs für den RootSync- oder RepoSync-Abgleich aufzurufen:

    kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
    

    Ersetzen Sie Folgendes:

    • RECONCILER_NAME: Der Abgleichsname des RootSync- oder RepoSync-Objekts.

      • Für RootSync lautet der Abgleichsname root-reconciler-ROOT_SYNC_NAME oder root-reconciler, wenn der Name von RootSync root-sync ist.

      • Für RepoSync lautet der Abgleichsname ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH oder ns-reconciler-NAMESPACE, wenn der Name von RepoSync repo-sync ist, wobei NAMESPACE der Namespace ist, in dem Sie das RepoSync-Objekt erstellt haben.

    • CONTAINER_NAME: Der Containername muss einer der folgenden Werte sein: reconciler, git-sync, hydration-controller, oci-sync oder helm-sync. Weitere Informationen zu diesen Containern finden Sie unter Abgleich-Container.

Logebene für RootSync- oder RepoSync-Abgleich konfigurieren

Wenn Sie weitere Informationen in die Containerlogs aufnehmen möchten, konfigurieren Sie die Log-Ausführlichkeit. Die meisten Container haben standardmäßig den Wert 0 für die Ausführlichkeit des Logs. Ausnahmen sind die Container git-sync und otel-agent, die den Standardwert 5 haben.

Wenn Sie die Protokollausführlichkeit ändern, sollten Sie bedenken, dass eine höhere Protokollausführlichkeit zu höheren Protokollierungskosten führt, da mehr Daten aufgezeichnet werden.

Wenn Sie die Ausführlichkeit des Logs ändern möchten, verwenden Sie das Feld .spec.override.logLevels, wie im folgenden Beispiel gezeigt:

apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
  name: root-sync
  namespace: config-management-system
spec:
  override:
    logLevels:
    - containerName: "reconciler"
      logLevel: 0
    - containerName: "git-sync"
       logLevel: 10

Der Wert im Feld containerName muss einer der folgenden sein: reconciler, git-sync, hydration-controller, oci-sync oder helm-sync.

Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Ausführlichkeit der Protokolle konfiguriert ist:

kubectl get deployment.apps/root-reconciler -n config-management-system -o yaml

Die Log-Ausführlichkeit finden Sie als einen Wert von args in spec.template.spec.containers[] und sieht so aus: -v=0. Dabei ist 0 die aktuelle Log-Ausführlichkeit. In diesem Beispiel würden bei einem Log-Ausführlichkeitswert von 0 nur kritische Ereignisse protokolliert.