Monitoraggio di oggetti RootSync e RepoSync

Questa pagina mostra diversi modi in cui puoi monitorare gli oggetti RootSync e RepoSync. Ad esempio, potresti voler verificare se l'ultimo commit in una fonte attendibile è stato applicato a un cluster e se la riconciliazione è andata a buon fine.

Visualizzare i commit sincronizzati

Puoi controllare quale commit è sincronizzato con il cluster controllando il campo .status.sync nell'oggetto RootSync o RepoSync.

  • Per visualizzare i commit sincronizzati per un oggetto RootSync, esegui il seguente comando:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Sostituisci ROOT_SYNC_NAME con il nome dell'oggettoRootSync.

  • Per visualizzare i commit sincronizzati per un oggetto RepoSync, esegui il seguente comando:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: il nome dell'oggetto RepoSync.
    • REPO_SYNC_NAMESPACE: lo spazio dei nomi in cui hai creato il repository dello spazio dei nomi.

L'output di questi comandi mostra il valore del commit di origine e del commit sincronizzato. Ad esempio, se hai eseguito il comando per RepoSync, vedrai un output simile al seguente:

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

Il valore nella colonna RENDERINGCOMMIT è il commit elaborato dal hydration-controller. Se non è necessario alcun rendering, il valore è uguale a quello della colonna SOURCECOMMIT. Il valore nella colonna SOURCECOMMIT è il commit dall'origine attendibile che deve essere sincronizzato con il cluster. Il valore nella colonna SYNCCOMMIT è il commit di cui viene eseguito il deployment nel cluster. Se i due valori nelle colonne SOURCECOMMIT e SYNCCOMMIT sono uguali, il commit previsto è stato disegnato nel cluster.

Verifica che le risorse nel commit siano riconciliate

Poiché ResourceGroups acquisisce lo stato di riconciliazione delle risorse gestite dichiarate nella verità di riferimento, puoi esaminarle per verificare se le risorse nel commit sono riconciliate.

L'oggetto ResourceGroup ha lo stesso spazio dei nomi e lo stesso nome dell'oggetto RootSync o RepoSync. Ad esempio, per l'oggetto RootSync con il nome root-sync nello spazio dei nomi config-management-system, anche l'oggetto ResourceGroup corrispondente è root-sync nello spazio dei nomi config-management-system.

  • Per ottenere l'oggetto ResourceGroup per un oggetto RootSync:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • Per ottenere l'oggetto ResourceGroup per un oggetto RepoSync:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Sostituisci quanto segue:

    • ROOT_SYNC_NAME: il nome dell'oggetto ResourceGroup che vuoi cercare.
    • REPO_SYNC_NAME: il nome dell'oggetto ResourceGroup da cercare.
    • REPO_SYNC_NAMESPACE: il nome dell'oggetto ResourceGroup da cercare.

Per verificare che le risorse nel commit siano riconciliate, cerca quanto segue nell'output:

  • .status.observedGeneration è uguale al valore del campo .metadata.generation nell'oggetto ResourceGroup.
  • La condizione Stalled e la condizione Reconciling hanno entrambe status come "False".
  • Ogni elemento nel campo .status.resourceStatuses ha lo stato Current.

Visualizza errori

Gli oggetti RootSync e RepoSync utilizzano il campo status per monitorare gli errori riscontrati durante la sincronizzazione delle configurazioni dalla fonte attendibile a un cluster.

  • Per visualizzare lo stato di un oggetto RootSync, esegui il seguente comando:

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

    Sostituisci ROOT_SYNC_NAME con il nome dell'oggettoRootSync.

  • Per visualizzare lo stato di un oggetto RepoSync, esegui il seguente comando:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: il nome dell'oggetto RepoSync.
    • NAMESPACE: lo spazio dei nomi in cui hai creato il repository dello spazio dei nomi.

Per saperne di più sui campi secondari del campo status, consulta Stato degli oggetti.

Visualizza i dettagli dell'oggetto

Per visualizzare i dettagli degli oggetti RootSync e RepoSync e scoprire ulteriori informazioni su potenziali errori, utilizza il comando kubectl describe.

L'output di questo comando include eventi che possono essere particolarmente utili per il debug di problemi come i container che presentano vincoli di memoria (OOMKilled), errori di pianificazione o errori di pull delle immagini.

Per un formato più leggibile, converti l'output in YAML aggiungendo -o yaml ai seguenti comandi. Questo formato è particolarmente utile quando devi esaminare parametri, annotazioni o specifiche delle risorse specifici.

  • Per visualizzare i dettagli di un oggetto RootSync, esegui il seguente comando:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    Sostituisci ROOT_SYNC_NAME con il nome dell'oggetto RootSync.

  • Per visualizzare i dettagli di un oggetto RepoSync, esegui il seguente comando:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: il nome dell'oggetto RepoSync.
    • NAMESPACE: lo spazio dei nomi in cui hai creato il repository dello spazio dei nomi.

Visualizzare se una risorsa è pronta

Per scoprire se le risorse sincronizzate con il cluster sono pronte, visualizza lo stato della riconciliazione. Ad esempio, la visualizzazione dello stato di riconciliazione può indicarti se un deployment sincronizzato è pronto per gestire il traffico.

Per una fonte attendibile sincronizzata con il cluster, gli stati di riconciliazione di tutte le risorse vengono aggregati in una risorsa denominata ResourceGroup. Per ogni oggetto RootSync o RepoSync, viene generato un gruppo di risorse per acquisire l'insieme di risorse applicate al cluster e aggregarne gli stati.

  • Per visualizzare lo stato della riconciliazione per l'oggetto RootSync, esegui il seguente comando:

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

    Sostituisci ROOT_SYNC_NAME con il nome dell'oggetto RootSync.

  • Per visualizzare lo stato della riconciliazione per l'oggetto RepoSync, esegui questo comando:

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

    Sostituisci quanto segue:

    • REPO_SYNC_NAME: il nome dell'oggetto RepoSync.
    • NAMESPACE: lo spazio dei nomi in cui hai creato il repository dello spazio dei nomi.

Nell'output vengono visualizzati tutti gli stati delle risorse ResourceGroup. Ad esempio, l'output seguente mostra che un deployment denominato nginx-deployment è pronto:

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

Visualizza i log

Per ogni oggetto RootSync e RepoSync creato, Config Sync crea un deployment di riconciliazione per eseguire la sincronizzazione. Questa sezione spiega come visualizzare i log di questi riconciliatori. La visualizzazione dei log può essere utile per il debug di un problema fornendo informazioni aggiuntive su avanzamento, avvisi ed errori oltre a quelle disponibili nello stato degli oggetti RootSync e RepoSync.

  • Per visualizzare i log del riconciliatore RootSync o RepoSync, esegui il seguente comando:

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

    Sostituisci quanto segue:

    • RECONCILER_NAME: il nome del riconciliatore dell'oggetto RootSync o RepoSync.

      • Per RootSync, il nome del riconciliatore è root-reconciler-ROOT_SYNC_NAME o root-reconciler se il nome di RootSync è root-sync.

      • Per RepoSync, il nome del riconciliatore è ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH o ns-reconciler-NAMESPACE se il nome di RepoSync è repo-sync, dove NAMESPACE è lo spazio dei nomi in cui hai creato l'oggetto RepoSync.

    • CONTAINER_NAME: il nome del contenitore deve essere uno tra i seguenti valori: reconciler, git-sync, hydration-controller, oci-sync o helm-sync. Per saperne di più su questi contenitori, consulta Contenitori del riconciliatore.

Configura il livello di log del riconciliatore RootSync o RepoSync

Per includere più informazioni nei log del contenitore, configura la verbosità dei log. Per impostazione predefinita, la maggior parte dei contenitori ha un valore predefinito di 0 per la complessità dei log. Le eccezioni sono i contenitori git-sync e otel-agent, che hanno un valore predefinito di 5.

Quando modifichi la modalità dettagliata dei log, tieni presente che l'aumento della modalità dettagliata comporta costi di registrazione più elevati a causa del maggiore volume di dati registrati.

Per modificare la modalità di dettaglio dei log, utilizza il campo .spec.override.logLevels come mostrato nell'esempio seguente:

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

Il valore nel campo containerName deve essere uno dei seguenti: reconciler, git-sync, hydration-controller, oci-sync o helm-sync.

Per verificare che la modalità di dettaglio dei log sia configurata, esegui il seguente comando:

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

La modalità di dettaglio dei log è disponibile come uno dei valori args all'interno di spec.template.spec.containers[] e ha il seguente aspetto: -v=0, dove 0 è la modalità di dettaglio dei log corrente. In questo esempio, un valore di dettaglio del log pari a 0 registra solo gli eventi critici.