Problemas conocidos de Config Sync

En esta página se enumeran los problemas conocidos de las versiones compatibles de Config Sync.

Muchos de los problemas que se indican aquí se han solucionado. La columna Versión corregida indica la versión en la que se introdujo la corrección. Para recibir esta corrección, actualiza a la versión indicada o a una posterior.

Si formas parte del Programa para Desarrolladores de Google, guarda esta página para recibir notificaciones cuando se publiquen notas de la versión relacionadas con ella. Para obtener más información, consulta el artículo Páginas guardadas.

Para filtrar los problemas conocidos por versión de producto o categoría de problema, seleccione los filtros en los siguientes menús desplegables.

Selecciona tu versión de Config Sync:

Selecciona la categoría de tu problema:

También puedes filtrar los problemas conocidos:

Categoría Versión identificada Versión fija Problema y solución alternativa
Métricas 1.5.0 1.21.0

Corregido: métricas registradas de paquetes eliminados

Si elimina un objeto RootSync o RepoSync, pero no elimina el objeto ResourceGroup con el mismo nombre, Config Sync seguirá registrando las siguientes métricas del objeto ResourceGroup:

  • rg_reconcile_duration_seconds
  • resource_group_total
  • resource_count
  • ready_resource_count
  • resource_ns_count
  • cluster_scoped_resource_count
  • crd_count
  • kcc_resource_count
  • pipeline_error_observed
El objeto ResourceGroup solo se elimina automáticamente si la propagación de la eliminación se había habilitado antes de eliminar el objeto RootSync o RepoSync.

Solución alternativa:

Elimina el objeto ResourceGroup:

kubectl delete resourcegroup RESOURCE_GROUP_NAME -n config-management-system

Sustituye RESOURCE_GROUP_NAME por el nombre del objeto ResourceGroup que quieras eliminar. Para obtener más información sobre la denominación, consulta ResourceGroup Objetos ResourceGroup y ResourceGroup Controller.

Estado de los componentes 1.15.0

Reconciliador no programable

Los reconciliadores de Config Sync requieren cantidades variables de recursos, en función de la configuración de RootSync o RepoSync. Algunas configuraciones requieren más recursos que otras.

Si un reconciliador no se puede programar, puede deberse a que solicita más recursos de los que están disponibles en tus nodos.

Si usas clústeres de GKE en modo estándar, las solicitudes de recursos del reconciliador se definen en un valor muy bajo. Se ha elegido este ajuste para permitir la programación, aunque esto provoque limitaciones y un rendimiento lento, de forma que Config Sync funcione en clústeres y nodos pequeños. Sin embargo, en los clústeres de Autopilot de GKE, las solicitudes del reconciliador se definen en un valor más alto para representar de forma más realista el uso durante la sincronización.

Solución alternativa:

GKE Autopilot o GKE Standard con la función de aprovisionamiento automático de nodos habilitada deberían poder ver cuántos recursos se solicitan y crear nodos del tamaño adecuado para permitir la programación. Sin embargo, si configuras manualmente los nodos o los tamaños de las instancias de nodo, es posible que tengas que ajustar esos ajustes para adaptarlos a los requisitos de recursos del pod de reconciliación.

Métricas 1.15.0

No se ha podido exportar. Permiso denegado

De forma predeterminada, cuando el reconciliador detecta credenciales predeterminadas de la aplicación, el otel-collector se configura para exportar métricas a Prometheus, Cloud Monitoring y Monarch.

Solución alternativa:

otel-collector registra errores si no has configurado Cloud Monitoring o personalizado filtros de métricas y Cloud Monarch.

Métricas 1.15.0

otel-collector falla con una configuración personalizada

Si intentas modificar o eliminar uno de los ConfigMaps predeterminados, otel-collector o otel-collector-google-cloud, es posible que se produzca un error en otel-collector o que falle porque no puede cargar el ConfigMap necesario.

Solución alternativa:

Para personalizar la configuración de exportación de métricas, crea un ConfigMap llamado otel-collector-custom en el espacio de nombres config-management-monitoring.

Solución

Config Sync se contradice

Puede que parezca que Config Sync está en una lucha de controladores. consigo misma. Este problema se produce si define el valor predeterminado de un campo opcional de un recurso en el repositorio de Git. Por ejemplo, si se define apiGroup: "" para el asunto de un RoleBinding, se activa porque el campo apiGroup es opcional y el valor predeterminado es una cadena vacía. Los valores predeterminados de los campos de cadena, booleano y entero son "", false y 0 (respectivamente).

Solución alternativa:

Quita el campo de la declaración de recursos.

Solución

Config Sync entra en conflicto con los recursos de Config Connector

Puede parecer que Config Sync está luchando con Config Connector por un recurso, como un StorageBucket. Este problema se produce si no define el valor de un campo opcional de un recurso spec.lifecycleRule.condition.withState en la fuente de información.

Solución alternativa:

Para evitar este problema, añade el campo withState=ANY en la declaración de recursos. También puedes abandonar y volver a adquirir el recurso con la anotación cnrm.cloud.google.com/state-into-spec: absent.

Fuente de información veraz 1.13.0 1.20.1

Corregido: no se puede generar un token de acceso para la fuente de OCI

Cuando Config Sync se configura para usar OCI como fuente de información fiable y autenticarse con la federación de identidades de carga de trabajo para GKE, Config Sync puede encontrar errores temporales KNV2004 de vez en cuando cuando intente autenticarse con el registro de contenedores.

Este problema se debe a que la biblioteca oauth2 solo actualiza el token de autorización después de que haya caducado.

El mensaje de error puede incluir el siguiente texto: "oauth2/google: unable to generate access token" o "ID Token issued at (xxx) is stale to sign-in."

Solución alternativa:

El error debería resolverse la próxima vez que Config Sync intente obtener datos de la fuente de información veraz.

Cuando Config Sync ha dado error varias veces, los reintentos se vuelven menos frecuentes. Para forzar que Config Sync vuelva a intentarlo antes, elimina el pod de reconciliación. Pod. Esta acción hace que Config Sync vuelva a crear el pod de reconciliación y que obtenga información inmediatamente de la fuente de información veraz:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Sustituye RECONCILER_NAME por el nombre del reconciliador del objeto RootSync o RepoSync.
Fuente de información veraz 1.20.0 1.21.3

git-sync bucles de fallos de contenedor después de que un archivo de bloqueo de Git quede huérfano

Si ves que el contenedor git-sync entra en un bucle de fallos con errores similares a los siguientes en el registro del contenedor git-sync, es posible que una invocación anterior de git haya fallado y haya dejado un archivo de bloqueo huérfano en el contenedor:

    {"logger":""..."msg":"repo contains lock file","error":null,"path":"/repo/source/.git/shallow.lock"}
    ...runtime error: invalid memory address or nil pointer dereference
    

Solución alternativa:

Para solucionar este problema, reinicia el pod de reconciliación afectado para darle un nuevo volumen efímero:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Sustituye RECONCILER_NAME por el nombre del reconciliador del objeto RootSync o RepoSync.
Fuente de información veraz 1.19.0 1.20.0

Corregido: archivo de bloqueo de Git persistente

Si ves un error similar al siguiente en el contenedor git-sync, es posible que una invocación anterior de git haya fallado y haya dejado un archivo de bloqueo en el contenedor:

    KNV2004: error in the git-sync container: ... fatal: Unable to create '/repo/source/.git/shallow.lock': File exists. ...
    

Solución alternativa:

Para solucionar este problema, reinicia el pod de reconciliación afectado para darle un nuevo volumen efímero:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Sustituye RECONCILER_NAME por el nombre del reconciliador del objeto RootSync o RepoSync.
Sincronizando 1.7.0 1.21.0

Corregido: no se respeta la anotación de ignorar mutación

Un error en el reconciliador de Config Sync hace que aplique los cambios de las configuraciones declaradas aunque esté presente la anotación client.lifecycle.config.k8s.io/mutation. Esto podría provocar que se sobrescriba el estado del objeto en el clúster.

Solución alternativa:

Puedes dejar de gestionar el objeto gestionado añadiendo la anotación configmanagement.gke.io/managed: disabled. Sin embargo, si inhabilitas la gestión, Config Sync no podrá volver a crear el objeto si se elimina del clúster. También evita que se apliquen más actualizaciones en la fuente de información.

Sincronizando 1.5.0 1.20.1

Corregido: los errores de descubrimiento de la API pueden provocar que los objetos gestionados se marquen incorrectamente como Not Found

Si el backend de un servicio de API no está en buen estado, puede provocar que se produzca un error en la detección de la API. Si esto ocurre mientras se inicia el controlador ResourceGroup después de actualizarse o reprogramarse, la caché de recursos no se inicializará, lo que provocará que todos los objetos gestionados se notifiquen como Not Found en el estado de ResourceGroup.

Este problema suele producirse cuando el metrics-server no está en buen estado.

Solución alternativa:

Reinicia el resource-group-controller Pod después de que el metrics-server vuelva a estar en buen estado:

    kubectl delete pod -n resource-group-system RESOURCE_GROUP_CONTROLLER_NAME
    
Sustituye RESOURCE_GROUP_CONTROLLER_NAME por el nombre del controlador ResourceGroup, que es el mismo que el nombre de RootSync o RepoSync de ese paquete.
Sincronizando 1.15.0

Número elevado de solicitudes PATCH ineficaces en los registros de auditoría

El remediador de Config Sync usa la opción Prueba para detectar las desviaciones. Esto puede provocar que las solicitudes de PATCH aparezcan en el registro de auditoría, aunque PATCH no se conserve, porque el registro de auditoría no distingue entre las pruebas y las solicitudes normales.

Solución alternativa:

Como el registro de auditoría no puede distinguir entre las solicitudes de prueba y las que no lo son, puedes ignorar las solicitudes de PATCH.
Registro privado 1.19.0

Config Sync no usa el registro privado para las implementaciones de reconciliadores

Config Sync debe sustituir las imágenes de todas las implementaciones cuando se configure un registro privado. Sin embargo, Config Sync no sustituye el registro de imágenes de las imágenes de las implementaciones del reconciliador.

Solución alternativa:

Una solución alternativa para este problema es configurar el registro de imágenes duplicado en containerd.

Sincronizando 1.7.0 1.21.0

Corregido: no se ha podido escribir el inventario actualizado en el clúster

Si Config Sync no puede actualizar el estado de un objeto ResourceGroup, es posible que se produzca un error intermitente en los registros del reconciliador similar al siguiente:

    KNV2009: task failed (action: "Inventory", name: "inventory-set-0"): failed to write updated inventory to cluster: Operation cannot be fulfilled on resourcegroups.kpt.dev "root-sync": the object has been modified; please apply your changes to the latest version and try again
    

Este error se debe a una condición de carrera entre el reconciliador y el controlador ResourceGroup. Es posible que el controlador ResourceGroup actualice el estado de ResourceGroup antes de que el reconciliador pueda actualizar la especificación de ResourceGroup, lo que provoca el error KNV2009.

Solución alternativa:

No hay ninguna solución alternativa para este problema. El error debería resolverse solo.

Terraform Versión 5.41.0 de Terraform

Config Sync no se puede instalar ni actualizar con Terraform

La versión 5.41.0 de Terraform ha introducido un nuevo campo en el recurso google_gke_hub_feature_membership: config_sync.enabled. Como el valor predeterminado de este campo es false, si este campo no se define explícitamente como true, se producirá un error en las instalaciones o actualizaciones de Config Sync al usar Terraform 5.41.0 o versiones posteriores. También es posible que aparezca un mensaje de error que indique git spec not included in configmanagement spec si se produce este problema.

Solución alternativa:

  • Si usas el recurso google_gke_hub_feature_membership, define manualmente config_sync.enabled como true.
  • Si usas el submódulo acm, te recomendamos que cambies a otra forma de instalar Config Sync. Si no puedes cambiar, actualiza a la versión v33.0.0.

Google Cloud consola

Faltan datos en el panel de control de Config Sync en la Google Cloud consola

Es posible que veas errores como "faltan datos" o "credenciales de clúster no válidas" en los clústeres de Config Sync de los paneles de control de la Google Cloud consola. Este problema puede producirse cuando no has iniciado sesión en tus clústeres de GDC (VMware) o GDC (bare metal).

Solución alternativa:

Si ves este tipo de errores en la Google Cloud consola de tus clústeres de GDC (VMware) o GDC (bare metal), asegúrate de haber iniciado sesión en tus clústeres con GKE Identity Service o connect gateway.

Sincronizando 1.21.0

Corregido: Config Sync impide que se actualicen los recursos abandonados

Antes de la versión 1.21.0, un objeto RootSync o RepoSync eliminado podía dejar varias etiquetas y anotaciones que Config Sync usa para monitorizar estos objetos de recursos.

Estas etiquetas y anotaciones pueden provocar los siguientes efectos secundarios después de eliminar un objeto RootSync o RepoSync:

  • Otros objetos RepoSync no pueden hacerse propietarios de objetos gestionados anteriormente.
  • Si la prevención de la deriva está habilitada, puede provocar que Config Sync rechace los cambios en los recursos abandonados.

Herramienta de línea de comandos nomos 1.17.0

La CLI de nomos no admite el complemento de autenticación oidc

Es posible que veas errores como no Auth Provider found for name "oidc" cuando uses la herramienta de línea de comandos nomos. Este problema puede producirse cuando usas el complemento de autenticación oidc.

Solución alternativa:

No hay ninguna solución alternativa. El complemento de autenticación oidc se volverá a añadir en una versión posterior.

Volver al principio

Siguientes pasos