Risoluzione dei problemi di Config Controller

Questa pagina mostra come risolvere i problemi relativi a Config Controller.

Troubleshoot installation

Nessuna rete denominata predefinita

Durante la creazione dell'istanza di Config Controller, potresti ricevere un errore che indica che la rete predefinita non è disponibile:

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\"

Questo errore si verifica se non hai specificato una rete esistente con il flag --network e la rete predefinita in Google Cloud viene eliminata o disattivata. Per impostazione predefinita, Config Controller crea il cluster della versione Google Kubernetes Engine (GKE) Enterprise che supporta l'istanza di Config Controller nella rete predefinita.

Se vuoi creare l'istanza in una rete esistente, aggiungi il flag --network=NETWORK quando crei l'istanza di Config Controller. Sostituisci NETWORK con il nome di una rete esistente.

Se vuoi creare l'istanza di Config Controller nella rete predefinita, ricrea quella predefinita con il comando seguente:

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

Affinché questo comando funzioni, è necessario abilitare le subnet automatiche con il flag --subnet-mode=auto.

Dopo aver ricreato la rete predefinita, puoi omettere il flag --network quando crei l'istanza di Config Controller.

Valore non valido per MasterIpv4CidrBlock

Per la creazione di Config Controller viene utilizzata una subnet predefinita di 172.16.0.128/28 per il CIDR IPv4 del piano di controllo. Se esiste un conflitto nel blocco CIDR IPv4, la creazione di Config Controller non va a buon fine e viene restituito il seguente errore:

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.

Se visualizzi questo errore, seleziona un CIDR privato IPv4 diverso e utilizzalo utilizzando il flag --master-ipv4-cidr-block nel comando gcloud anthos config controller create.

Per trovare i blocchi CIDR IPv4 già in uso, completa i seguenti passaggi:

  1. Trova il nome del peering:

    gcloud compute networks peerings list --network=NETWORK
    

    Sostituisci NETWORK con il nome della rete che vuoi cercare.

    L'output è simile al seguente:

    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. Mostra il CIDR IPv4 utilizzato dal peering:

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

    Sostituisci quanto segue:

    • PEERING_NAME: il nome del peering che si desidera cercare
    • NETWORK: il nome della rete che desideri cercare
    • REGION: nome della regione in cui si trova l'istanza di Config Controller

Risolvere i problemi durante l'esecuzione di Config Controller

IP del pool di nodi esaurito

Se viene visualizzato il seguente messaggio di errore, i pool di nodi potrebbero non avere un numero sufficiente di indirizzi IP:

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

Questo problema può verificarsi se ometti il flag --cluster-ipv4-cidr-block. Se ometti questo flag, per impostazione predefinita Config Controller utilizza l'intervallo CIDR pod /20. Questo intervallo offre un massimo di 16 nodi.

Se hai bisogno di più nodi, elimina l'istanza di Config Controller perché non puoi modificare il blocco CIDR dopo la creazione. Quando ricrei l'istanza di Config Controller, utilizza il parametro facoltativo --cluster-ipv4-cidr-block e specifica CIDR range or netmask size.

Informazioni sulla dashboard mancanti

Se non vedi alcun dettaglio per Config Controller nella dashboard della console Google Cloud, l'account di servizio predefinito utilizzato da Config Controller potrebbe non disporre delle autorizzazioni Google Cloud Observability necessarie.

Per concedere queste autorizzazioni, utilizza i seguenti comandi:

# 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"

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui hai creato l'istanza di Config Controller
  • PROJECT_NUMBER: il numero del tuo progetto Google Cloud

Risolvere i problemi relativi ai componenti

Poiché l'istanza di Config Controller è preinstallata con Policy Controller, Config Sync e Config Connector, potresti riscontrare problemi con questi componenti. Per scoprire come risolvere i problemi relativi a questi componenti, consulta le seguenti pagine:

Le sezioni seguenti forniscono consigli su alcuni dei problemi più comuni che potresti riscontrare quando utilizzi Config Controller con questi componenti.

Errori di sincronizzazione

Le configurazioni nella tua origine di riferimento (ad esempio, un repository Git o un'immagine OCI) vengono sincronizzate con l'istanza Config Controller tramite Config Sync. Verifica la presenza di errori in questo processo di sincronizzazione utilizzando il comando nomos status:

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

Risolvere i problemi delle risorse di Config Connector

Risorse e campi immutabili

Alcuni campi delle risorse Google Cloud sottostanti sono immutabili, ad esempio gli ID progetto o il nome della rete VPC. Config Connector blocca le modifiche a questi campi e non è in grado di attuarle. Se vuoi modificare uno di questi campi immutabili, devi eliminare la risorsa originale (tramite Git) prima di riaggiungerla con i tuoi valori preferiti.

Risorse bloccate

A volte le risorse potrebbero non essere eliminate correttamente (come segnalato da nomos status). Puoi risolvere questo problema rimuovendo i finalizzatori dalla risorsa ed eliminandola manualmente.

Ad esempio, per eliminare un IAMPolicyMember bloccato, esegui questo 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

Passaggi successivi