Risoluzione dei problemi di Config Controller
Questa pagina mostra come risolvere i problemi relativi a Config Controller.
Troubleshoot installation
Nessuna rete denominata predefinita
Quando crei l'istanza di Config Controller, potresti ricevere un errore relativo alla 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 GKE 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, ricreala con il seguente comando:
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
La creazione di Config Controller utilizza una subnet predefinita di 172.16.0.128/28
per il CIDR IPv4 del piano di controllo.
Se si verifica un conflitto nel blocco CIDR IPv4, la creazione di Config Controller non riesce e viene riscontrato 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 vedi questo errore, seleziona un CIDR IPv4 privato diverso e utilizzalo con 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:
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.
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 vuoi cercareNETWORK
: il nome della rete che vuoi cercareREGION
: nome della regione in cui si trova l'istanza di Config Controller
Risolvere i problemi durante l'esecuzione di Config Controller
Ho esaurito gli IP del pool di nodi
Se viene visualizzato il seguente messaggio di errore, è possibile che i pool di nodi non abbiano 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
. Quando ometti questo flag, l'impostazione predefinita di Config Controller è l'intervallo CIDR dei pod /20
.
Questo intervallo fornisce un massimo di 16 nodi.
Se hai bisogno di più nodi, elimina l'istanza di Config Controller poiché non potrai 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 della dashboard mancanti
Se non vedi alcun dettaglio per Config Controller nella dashboard di Google Cloud Console, l'account di servizio predefinito utilizzato da Config Controller potrebbe non disporre delle autorizzazioni per la suite operativa di Google Cloud 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 ControllerPROJECT_NUMBER
: il tuo numero di 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:
- Risolvere i problemi relativi a Policy Controller
- Risolvere i problemi di Config Sync
- Risolvere i problemi di Config Connector
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 nell'origine di dati (ad esempio, un repository Git o un'immagine OCI) vengono sincronizzate con l'istanza di Config Controller con 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 relativi alle risorse di Config Connector
Risorse e campi non modificabili
Alcuni campi delle risorse Google Cloud sottostanti sono immutabili, come gli ID progetto o il nome della rete VPC. Config Connector blocca le modifiche a questi campi e non è in grado di apportare modifiche. 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 l'eliminazione delle risorse potrebbe non riuscire (come riportato da nomos
status
). Puoi risolvere il problema rimuovendo i finalisti dalla risorsa ed eliminando manualmente la risorsa.
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