Risoluzione dei problemi di configurazione

Questa sezione descrive i problemi più comuni di Cloud Service Mesh e spiega come risolverli. Se hai bisogno di ulteriore assistenza, consulta Richiedere assistenza.

Controllare MembershipState

In qualsiasi momento puoi controllare lo stato più recente del mesh eseguendo il seguente comando:

gcloud container fleet mesh describe

L'output è simile al seguente:

...
membershipSpecs:
  projects/project_id/locations/global/memberships/cluster:
    mesh:
      management: MANAGEMENT_AUTOMATIC
membershipStates:
  projects/project_id/locations/global/memberships/cluster:
    servicemesh:
      ...
      conditions:
        - code: CONFIG_VALIDATION_WARNING
          documentationLink: https://cloud.google.com/...
          details: Application of one or more configs has failed. Error details are shown on individual config resources. See documentation link for more detail.
          severity: WARNING
...

Codici di errore di MembershipState

Se Cloud Service Mesh segnala condizioni a MembershipState per un cluster, potrebbe significare che non è stato possibile applicare le configurazioni del mesh (ad esempio le risorse personalizzate di Istio). Le seguenti descrizioni dei codici di errore forniscono ulteriori informazioni su come risolverli.

Codice di errore Causa Risoluzione
CONFIG_APPLY_INTERNAL_ERROR Non è stato possibile applicare una o più configurazioni a causa di un errore interno. Contatta l'assistenza clienti.
QUOTA_EXCEEDED_* Non è stato possibile applicare una o più configurazioni perché le risorse hanno raggiunto un limite di quota. Consulta la pagina Quote per informazioni sulle quote specifiche e su come aumentarle.
CONFIG_VALIDATION_ERROR Non è stato possibile applicare una o più configurazioni a causa di una configurazione non valida. Per le risorse personalizzate di Istio, le configurazioni non valide vengono eliminate completamente dalla traduzione. Gli errori specifici vengono scritti nelle configurazioni che li hanno causati. Per saperne di più su come diagnosticarli, consulta la sezione Errori di convalida della configurazione.
CONFIG_VALIDATION_WARNING Abbiamo riscontrato potenziali problemi in una o più configurazioni. Per le risorse personalizzate di Istio, i campi non validi specifici vengono ignorati, ma le configurazioni complessive vengono elaborate. Potrebbe verificarsi un comportamento imprevisto. Per saperne di più su come diagnosticarli, consulta la sezione Errori di convalida della configurazione.
MULTICLUSTER_SECRET_WARNING Il cluster utilizza un secret multi-cluster di Istio creato manualmente anziché l'API multi-cluster dichiarativa per l'individuazione degli endpoint. Trasferisci la configurazione di individuazione degli endpoint multi-cluster all'implementazione dichiarativa. Per saperne di più, consulta la pagina Secret multi-cluster.
WORKLOAD_IDENTITY_REQUIRED Workload Identity non è abilitato per il cluster o per almeno uno dei pool di nodi. Abilita Workload Identity a livello di cluster e pool di nodi. Per istruzioni, consulta la pagina Abilitare Workload Identity.
MANAGED_CNI_NOT_ENABLED CNI gestito non è abilitato per questo cluster. Abilita CNI gestito per mantenere le best practice all'interno del mesh. Per saperne di più, consulta la pagina Abilitare CNI gestito.
NON_STANDARD_SIDECAR_BINARY_USAGE Uno o più comandi all'interno dei container Istio utilizzano file binari diversi da `envoy`, `pilot_agent` o `iptables`. Rimuovi la dipendenza dai file binari non supportati. Per saperne di più, consulta la pagina Utilizzo di file binari non supportati.
UNSUPPORTED_GATEWAY_CLASS_USAGE Il cluster è configurato con classi di gateway (Istio e Anthos Service Mesh) che richiedono la migrazione a Istio Ingress Gateway per allinearsi alle best practice. Per istruzioni dettagliate, consulta la documentazione.
UNSUPPORTED_MULTIPLE_CONTROL_PLANES Il cluster ha eseguito il provisioning di più canali del control plane. Cloud Service Mesh supporta un solo canale per cluster. Per saperne di più, consulta Risolvere il problema di più control plane.
REQUIRED_ORG_POLICY_DISABLED È necessario abilitare una policy dell'organizzazione disabilitata. Disabilita questa policy per il progetto per garantire la funzionalità di Cloud Service Mesh. Per saperne di più, consulta Abilitare una policy dell'organizzazione obbligatoria.
MISSING_CONTROL_PLANE_CONFIG Il cluster non ha la configurazione per Cloud Service Mesh. Segui le istruzioni riportate nella documentazione relativa alla configurazione del control plane mancante per creare questa configurazione. Il mesh di servizi funziona ancora ma richiede un aggiornamento.

Errori di convalida della configurazione

I codici CONFIG_VALIDATION_WARNING e CONFIG_VALIDATION_ERROR indicano che sono stati riscontrati problemi nelle configurazioni del mesh (risorse personalizzate di Istio o Kubernetes Custom Resources) e che un sottoinsieme di configurazioni potrebbe non essere stato applicato correttamente.

Comportamento di convalida della configurazione

Cloud Service Mesh utilizza un processo di convalida della configurazione a due livelli:

  1. Convalida sincrona: un webhook di convalida esegue i controlli di sintassi iniziali. Se una configurazione è fondamentalmente errata, l'aggiornamento viene rifiutato a livello dell'API Kubernetes e kubectl apply non riesce immediatamente.
  2. Convalida asincrona: la verifica semantica viene eseguita in background durante la traduzione. Se questa fase rileva una configurazione non valida, il sistema elimina in modo asincrono la risorsa personalizzata (CR) per evitare che interrompa il resto del mesh, continuando ad applicare le altre configurazioni valide.

Per comprendere meglio questo comportamento, consulta la sezione Comprendere la convalida della configurazione.

Individuare le configurazioni non valide

Poiché le risorse personalizzate non valide vengono eliminate in modo asincrono, devi controllarne attivamente lo stato. Molti dettagli sugli errori per risorsa vengono scritti nel campo dello stato della risorsa applicabile e visualizzati nello stato della funzionalità del parco risorse.

Il seguente comando può essere utilizzato per individuare le configurazioni non valide e visualizzare i messaggi di errore specifici. (Nota: questi sono specificamente per le risorse Istio e non tutti gli errori di convalida potrebbero essere visualizzati qui).

for resource in serviceentries destinationrules virtualservices gateways peerauthentications authorizationpolicies requestauthentications sidecars telemetries envoyfilters;
  do kubectl get $resource --all-namespaces --output=json | \
   jq  '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "Accepted" and .status == "False")) | {"name": .metadata.name, "namespace": .metadata.namespace, "kind": .kind, "conditions": .status.conditions}';
done

L'output è simile al seguente:

{
  "name": "demo-envoy-filter",
  "namespace": "default",
  "kind": "EnvoyFilter",
  "conditions": [
    {
      "lastTransitionTime": "2024-04-04T21:10:18.046975988Z",
      "message": "This API is not supported",
      "reason": "Invalid",
      "status": "False",
      "type": "Accepted"
    }
  ]
}