Soluciona problemas del controlador de configuración

En esta página, se muestra cómo resolver problemas con el controlador de configuración.

Soluciona problemas de instalación

No hay ninguna red llamada predeterminada

Cuando creas la instancia de Config Controller, es posible que recibas un error que indica que la red predeterminada no está disponible:

Error 400: Project \"PROJECT_ID\" has no network named \"default\"., badRequest\n\n  on main.tf line 35, in resource \"google_container_cluster\" \"acp_cluster\"

Este error se produce si no especificaste una red existente con la marca --network y tu red predeterminada en Google Cloud se borró o inhabilitó. De forma predeterminada, Config Controller crea el clúster de edición empresarial de Google Kubernetes Engine (GKE) que respalda tu instancia de Config Controller en la red predeterminada.

Si deseas crear la instancia en una red existente, agrega la marca --network=NETWORK cuando crees tu instancia de Config Controller. Reemplaza NETWORK por el nombre de una red existente.

Si deseas crear la instancia de Config Controller en la red predeterminada, vuelve a crearla con el siguiente comando:

gcloud compute networks create default --subnet-mode=auto

Para que funcione este comando, es necesario habilitar las subredes automáticas con la marca --subnet-mode=auto.

Después de volver a crear tu red predeterminada, puedes omitir la marca --network cuando crees tu instancia de Config Controller.

Valor no válido para MasterIpv4CidrBlock

La creación del controlador de configuración usa una subred predeterminada de 172.16.0.128/28 para el CIDR de IPv4 del plano de control. Si hay un conflicto en el bloque de CIDR de IPv4, la creación de Config Controller fallará con el siguiente error:

Cloud SSA\n\nError: Error waiting for creating GKE cluster: Invalid value for field PrivateClusterConfig.MasterIpv4CidrBlock: 172.16.0.128/28 conflicts with an existing subnet in one of the peered VPCs.

Si ves este error, selecciona un CIDR de IPv4 privado diferente y úsalo con la marca --master-ipv4-cidr-block en el comando gcloud anthos config controller create.

Para encontrar los bloques de CIDR IPv4 que ya están en uso, completa los siguientes pasos:

  1. Busca el nombre del intercambio de tráfico:

    gcloud compute networks peerings list --network=NETWORK
    

    Reemplaza NETWORK por el nombre de la red que deseas buscar.

    El resultado es similar a este:

    NAME                                    NETWORK   PEER_PROJECT               PEER_NETWORK                            PEER_MTU  IMPORT_CUSTOM_ROUTES  EXPORT_CUSTOM_ROUTES  STATE   STATE_DETAILS
    gke-n210ce17a4dd120e16b6-7ebf-959a-peer  default  gke-prod-us-central1-59d2  gke-n210ce17a4dd120e16b6-7ebf-0c27-net            False                 False                 ACTIVE  [2021-06-08T13:22:07.596-07:00]: Connected.
    
  2. Muestra el CIDR IPv4 que usa el intercambio de tráfico:

    gcloud compute networks peerings list-routes PEERING_NAME \
        --direction=INCOMING \
        --network=NETWORK \
        --region=REGION
    

    Reemplaza lo siguiente:

    • PEERING_NAME: El nombre del intercambio de tráfico que deseas buscar
    • NETWORK: el nombre de la red que deseas buscar
    • REGION: Es el nombre de la región en la que se encuentra tu instancia de Config Controller.

Soluciona problemas mientras ejecutas el controlador de configuración

Se agotaron las IPs del grupo de nodos

Si ves el siguiente mensaje de error, es posible que tus grupos de nodos no tengan suficientes direcciones IP:

Can't scale up because instances in managed instance groups hosting node pools ran out of IPs

Este problema puede ocurrir si omites la marca --cluster-ipv4-cidr-block. Cuando omites esta marca, el controlador de configuración usa de forma predeterminada el rango de CIDR del Pod /20. Este rango te brinda un máximo de 16 nodos.

Si necesitas más nodos, borra tu instancia de Config Controller, ya que no puedes modificar el bloque CIDR después de la creación. Cuando vuelvas a crear la instancia de Config Controller, usa el parámetro opcional --cluster-ipv4-cidr-block y especifica CIDR range or netmask size.

Falta información en el panel

Si no ves ningún detalle de Config Controller en el panel de la consola de Google Cloud, es posible que la cuenta de servicio predeterminada que usa Config Controller no tenga los permisos de Google Cloud Observability que necesita.

Para otorgar estos permisos, usa los siguientes comandos:

# Cloud Monitoring metrics permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/monitoring.metricWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/stackdriver.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/opsconfigmonitoring.resourceMetadata.writer \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

# Cloud Logging permissions
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/logging.logWriter \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

# Cloud Trace permissions\
gcloud projects add-iam-policy-binding PROJECT_ID \
    --role=roles/cloudtrace.agent \
    --condition=None \
    --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com"

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto en el que creaste tu instancia de Config Controller
  • PROJECT_NUMBER: el número de tu proyecto de Google Cloud.

Soluciona problemas relacionados con los componentes

Debido a que tu instancia de Config Controller viene preinstalada con Policy Controller, el Sincronizador de configuración y Config Connector, es posible que tengas problemas con estos componentes. Para obtener información sobre cómo solucionar problemas relacionados con estos componentes, consulta las siguientes páginas:

En las siguientes secciones, se proporcionan sugerencias sobre algunos de los problemas más comunes que puedes encontrar cuando usas Config Controller con estos componentes.

Errores de sincronización

Los parámetros de configuración de tu fuente de información (por ejemplo, un repositorio de Git o una imagen de OCI) se sincronizan con tu instancia de Config Controller con el Sincronizador de configuración. Verifica si hay errores en este proceso de sincronización mediante el comando nomos status:

nomos status  --contexts $(kubectl config current-context)

Soluciona problemas de recursos de Config Connector

Campos inmutables y recursos

Algunos campos de los recursos subyacentes de Google Cloud son inmutables, como los de ID del proyecto o el nombre de tu red de VPC. Config Connector bloquea las ediciones en esos campos y no puede activar los cambios. Si deseas editar uno de estos campos inmutables, primero debes borrar el recurso original (mediante Git) antes de volver a agregarlo con los valores preferidos.

Recursos bloqueados

A veces, es posible que los recursos no se borren correctamente (como informa nomos status). Para solucionar este problema, quita los finalizadores del recurso y, luego, bórralo de forma manual.

Por ejemplo, para borrar un IAMPolicyMember bloqueado, ejecuta el siguiente comando:

kubectl patch IAMPolicyMember logging-sa-iam-permissions \
    -p '{"metadata":{"finalizers":[]}}' --type=merge -n config-control
kubectl delete IAMPolicyMember logging-sa-iam-permissions -n config-control

¿Qué sigue?