Monitorizar objetos RootSync y RepoSync

En esta página se muestran diferentes formas de monitorizar los objetos RootSync y RepoSync. Por ejemplo, puede que quieras verificar si la última confirmación de un origen de la información se ha aplicado a un clúster y se ha conciliado correctamente.

Ver las confirmaciones sincronizadas

Para comprobar qué confirmación se ha sincronizado con el clúster, consulta el campo .status.sync del objeto RootSync o RepoSync.

  • Para ver las confirmaciones sincronizadas de un objeto RootSync, ejecuta el siguiente comando:

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    Sustituye ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver las confirmaciones sincronizadas de un objeto RepoSync, ejecuta el siguiente comando:

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • REPO_SYNC_NAMESPACE: el espacio de nombres en el que has creado el repositorio de espacio de nombres.

El resultado de estos comandos muestra el valor de la confirmación de origen y la confirmación sincronizada. Por ejemplo, si has ejecutado el comando de RepoSync, verás un resultado similar al siguiente:

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

El valor de la columna RENDERINGCOMMIT es la confirmación que procesa el hydration-controller. Si no es necesario renderizar, el valor es el mismo que el de la columna SOURCECOMMIT. El valor de la columna SOURCECOMMIT es la confirmación de la fuente de información veraz que se debe sincronizar con el clúster. El valor de la columna SYNCCOMMIT es la confirmación que se implementa en el clúster. Si los dos valores de las columnas SOURCECOMMIT y SYNCCOMMIT son iguales, el commit esperado se ha implementado en el clúster.

Confirma que los recursos del commit se han conciliado

Como ResourceGroups registra el estado de conciliación de los recursos gestionados declarados en la fuente de información veraz, puedes examinarlos para confirmar si los recursos de la confirmación se han conciliado.

El objeto ResourceGroup tiene el mismo espacio de nombres y nombre que el objeto RootSync o RepoSync. Por ejemplo, para el objeto RootSync con el nombre root-sync en el espacio de nombres config-management-system, el objeto ResourceGroup correspondiente también es root-sync en el espacio de nombres config-management-system.

  • Para obtener el objeto ResourceGroup de un objeto RootSync:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • Para obtener el objeto ResourceGroup de un objeto RepoSync, haz lo siguiente:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    Haz los cambios siguientes:

    • ROOT_SYNC_NAME: el nombre del objeto ResourceGroup que quieras buscar.
    • REPO_SYNC_NAME: el nombre del objeto ResourceGroup que quieras buscar.
    • REPO_SYNC_NAMESPACE: el nombre del objeto ResourceGroup que quieras buscar.

Para confirmar que los recursos de la confirmación se han conciliado, busca lo siguiente en el resultado:

  • El valor de .status.observedGeneration es igual al valor del campo .metadata.generation del objeto ResourceGroup.
  • La condición Stalled tiene un status de "False".
  • Cada elemento de .status.resourceStatuses tiene un actuation de Succeeded, un reconcile de Succeeded y un status de Current.

Ver errores

Los objetos RootSync y RepoSync usan el campo status para registrar los errores que se producen al sincronizar las configuraciones de la fuente de información veraz con un clúster.

  • Para ver el estado de un RootSyncobjeto, ejecuta el siguiente comando:

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

    Sustituye ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver el estado de un objeto RepoSync, ejecuta el siguiente comando:

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • NAMESPACE: el espacio de nombres en el que has creado el repositorio de espacio de nombres.

Para obtener más información sobre los subcampos del campo status, consulta Estado de los objetos.

Ver los detalles de un objeto

Para ver los detalles de los objetos RootSync y RepoSync, y obtener más información sobre posibles errores, usa el comando kubectl describe.

El resultado de este comando incluye eventos, que pueden ser especialmente útiles para depurar problemas como los contenedores que tienen restricciones de memoria (OOMKilled), los fallos de programación o los errores de extracción de imágenes.

Para que el formato sea más legible, convierte la salida a YAML añadiendo -o yaml a los siguientes comandos. Este formato es especialmente útil cuando necesitas examinar parámetros, anotaciones o especificaciones de recursos concretos.

  • Para ver los detalles de un objeto RootSync, ejecuta el siguiente comando:

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    Sustituye ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver los detalles de un objeto RepoSync, ejecuta el siguiente comando:

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • NAMESPACE: el espacio de nombres en el que has creado el repositorio de espacio de nombres.

Ver si un recurso está listo

Para saber si los recursos sincronizados con el clúster están listos, consulta el estado de reconciliación. Por ejemplo, al consultar el estado de conciliación, puedes ver si una implementación sincronizada está lista para servir tráfico.

En el caso de una fuente de información veraz sincronizada con el clúster, los estados de conciliación de todos los recursos se agregan en un recurso llamado ResourceGroup. Por cada objeto RootSync o RepoSync, se genera un ResourceGroup para registrar el conjunto de recursos aplicados al clúster y agregar sus estados.

  • Para ver el estado de conciliación del objeto RootSync, ejecuta el siguiente comando:

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

    Sustituye ROOT_SYNC_NAME por el nombre del objeto RootSync.

  • Para ver el estado de conciliación del objeto RepoSync, ejecuta el siguiente comando:

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

    Haz los cambios siguientes:

    • REPO_SYNC_NAME: el nombre del objeto RepoSync.
    • NAMESPACE: el espacio de nombres en el que has creado el repositorio de espacio de nombres.

En la salida, se muestran todos los estados de los recursos de ResourceGroup. Por ejemplo, el siguiente resultado muestra que una implementación llamada nginx-deployment está lista:

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

Ver registros

Por cada objeto RootSync y RepoSync que cree, Config Sync crea un reconciliador Deployment para realizar la sincronización. En esta sección se explica cómo ver los registros de estos reconciliadores. Ver los registros puede ayudarte a depurar un problema, ya que te proporciona información adicional sobre el progreso, las advertencias y los errores, además de lo que está disponible en el estado de los objetos RootSync y RepoSync.

  • Para ver los registros del reconciliador RootSync o RepoSync, ejecuta el siguiente comando:

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

    Haz los cambios siguientes:

    • RECONCILER_NAME: el nombre del reconciliador del objeto RootSync o RepoSync.

      • En el caso de RootSync, el nombre del reconciliador es root-reconciler-ROOT_SYNC_NAME o root-reconciler si el nombre de RootSync es root-sync.

      • En RepoSync, el nombre del reconciliador es ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH o ns-reconciler-NAMESPACE si el nombre de RepoSync es repo-sync, donde NAMESPACE es el espacio de nombres en el que has creado el objeto RepoSync.

    • CONTAINER_NAME: el nombre del contenedor debe ser uno de los siguientes valores: reconciler, git-sync, hydration-controller, oci-sync o helm-sync. Para obtener más información sobre estos contenedores, consulta Contenedores de reconciliación.

Configurar el nivel de registro del reconciliador de RootSync o RepoSync

Para incluir más información en los registros de contenedores, configura el nivel de detalle de los registros. De forma predeterminada, la mayoría de los contenedores tienen el valor 0 en logVerbosity. Las excepciones son los contenedores git-sync y otel-agent, que tienen el valor predeterminado 5.

Cuando cambies el nivel de verbosidad de los registros, ten en cuenta que, si lo aumentas, los costes de registro serán más altos porque se registrará un mayor volumen de datos.

Para cambiar el nivel de verbosidad de los registros, usa el campo .spec.override.logLevels, como se muestra en el siguiente ejemplo:

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

El valor del campo containerName debe ser uno de los siguientes: reconciler, git-sync, hydration-controller, oci-sync o helm-sync.

Para confirmar que la verbosidad del registro está configurada, ejecuta el siguiente comando:

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

La verbosidad del registro se encuentra en uno de los args de spec.template.spec.containers[] y tiene el siguiente aspecto: -v=0, donde 0 es la verbosidad del registro actual. En este ejemplo, si el valor de verbosidad del registro es 0, solo se registrarán los eventos críticos.