Konfigurationsprobleme beheben

In diesem Abschnitt werden häufig auftretende Probleme bei Cloud Service Mesh und deren Behebung beschrieben. Weitere Informationen finden Sie unter Support.

„MembershipState“ prüfen

Sie können den aktuellen Status des Mesh jederzeit mit dem folgenden Befehl prüfen:

gcloud container fleet mesh describe

Die Ausgabe sieht etwa so aus:

...
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
...

Fehlercodes für „MembershipState“

Wenn Cloud Service Mesh Bedingungen zum „MembershipState“ eines Clusters meldet, kann dies bedeuten, dass Mesh-Konfigurationen (z. B. benutzerdefinierte Istio-Ressourcen) nicht angewendet werden konnten. Die folgenden Beschreibungen für Fehlercodes enthalten weitere Informationen zur Behebung der Fehler.

Fehlercode Ursache Lösung
CONFIG_APPLY_INTERNAL_ERROR Mindestens eine Konfiguration konnte aufgrund eines internen Fehlers nicht angewendet werden. Bitte kontaktieren Sie den Kundensupport.
QUOTA_EXCEEDED_* Mindestens eine Konfiguration konnte nicht angewendet werden, da das Kontingent für Ressourcen ausgeschöpft wurde. Informationen zu den einzelnen Kontingenten und wie Sie diese erhöhen können, finden Sie unter Kontingente.
CONFIG_VALIDATION_ERROR Mindestens eine Konfiguration konnte aufgrund einer ungültigen Konfiguration nicht angewendet werden. Bei benutzerdefinierten Istio-Ressourcen werden die ungültigen Konfigurationen vollständig aus der Übersetzung entfernt. Die einzelnen Fehler werden in die Konfigurationen geschrieben, in denen sie aufgetreten sind. Weitere Informationen zur Diagnose dieser Fehler finden Sie im Abschnitt Fehler bei der Konfigurationsvalidierung.
CONFIG_VALIDATION_WARNING In mindestens einer Konfiguration sind potenzielle Probleme aufgetreten. Bei benutzerdefinierten Istio-Ressourcen werden bestimmte ungültige Felder ignoriert, die Gesamtkonfigurationen werden aber verarbeitet. Es kann zu unerwartetem Verhalten kommen. Weitere Informationen zur Diagnose dieser Fehler finden Sie im Abschnitt Fehler bei der Konfigurationsvalidierung.
MULTICLUSTER_SECRET_WARNING Der Cluster verwendet ein manuell erstelltes Istio-Multi-Cluster-Secret anstelle der deklarativen Multi-Cluster-API für die Endpunkterkennung. Richten Sie die Multi-Cluster-Endpunkterkennung mit der deklarativen Implementierung ein. Weitere Informationen finden Sie auf der Seite Multi-Cluster-Secrets.
WORKLOAD_IDENTITY_REQUIRED Workload Identity ist für den Cluster oder mindestens einen der Knotenpools nicht aktiviert. Aktivieren Sie Workload Identity auf Cluster- und Knotenpoolebene. Eine Anleitung finden Sie auf der Seite Workload Identity aktivieren.
MANAGED_CNI_NOT_ENABLED Managed CNI ist für diesen Cluster nicht aktiviert. Aktivieren Sie Managed CNI, um Best Practices in Ihrem Mesh einzuhalten. Weitere Informationen finden Sie auf der Seite Managed CNI aktivieren.
NON_STANDARD_SIDECAR_BINARY_USAGE In mindestens einem Befehl in Istio-Containern werden andere Binärdateien als `envoy`, `pilot_agent` oder `iptables` verwendet. Entfernen Sie die Abhängigkeit von nicht unterstützten Binärdateien. Weitere Informationen finden Sie auf der Seite Verwendung nicht unterstützter Binärdateien.
UNSUPPORTED_GATEWAY_CLASS_USAGE Der Cluster ist mit Gateway-Klassen (Istio und Anthos Service Mesh) konfiguriert, die zum Istio Ingress Gateway migriert werden müssen, um Best Practices zu entsprechen. Eine detaillierte Anleitung finden Sie in der Dokumentation.
UNSUPPORTED_MULTIPLE_CONTROL_PLANES Für den Cluster wurden mehrere Versionen der Steuerungsebene bereitgestellt. Cloud Service Mesh unterstützt nur eine Version pro Cluster. Weitere Informationen finden Sie unter Mehrere Steuerungsebenen beheben.
REQUIRED_ORG_POLICY_DISABLED Eine deaktivierte Organisationsrichtlinie muss aktiviert werden. Deaktivieren Sie diese Richtlinie für das Projekt, um die Cloud Service Mesh-Funktionalität zu gewährleisten. Weitere Informationen finden Sie unter Erforderliche Organisationsrichtlinie aktivieren.
MISSING_CONTROL_PLANE_CONFIG Für den Cluster fehlt die Konfiguration für Cloud Service Mesh. Folgen Sie der Anleitung in der Dokumentation zur fehlenden Konfiguration der Steuerungsebene , um diese Konfiguration zu erstellen. Ihr Service Mesh funktioniert weiterhin , muss aber aktualisiert werden.

Fehler bei der Konfigurationsvalidierung

CONFIG_VALIDATION_WARNING und CONFIG_VALIDATION_ERROR Codes weisen auf Probleme in Mesh-Konfigurationen (Istio- oder benutzerdefinierte Kubernetes Ressourcen) und darauf hin, dass eine Teilmenge der Konfigurationen möglicherweise nicht richtig angewendet wurde.

Verhalten bei der Konfigurationsvalidierung

Cloud Service Mesh verwendet einen zweistufigen Prozess zur Konfigurationsvalidierung:

  1. Synchronous Validation (Synchronous Validation): Ein Validierungs-Webhook führt erste Syntaxprüfungen durch. Wenn eine Konfiguration grundlegend falsch formatiert ist, wird die Aktualisierung auf der Kubernetes API-Ebene abgelehnt und kubectl apply schlägt sofort fehl.
  2. Asynchronous Validation (Asynchronous Validation): Die semantische Überprüfung erfolgt im Hintergrund während der Übersetzung. Wenn in dieser Phase eine ungültige Konfiguration erkannt wird, verwirft das System die benutzerdefinierte Ressource asynchron, um zu verhindern, dass sie den Rest des Mesh beschädigt. Die übrigen gültigen Konfigurationen werden weiterhin angewendet.

Weitere Informationen zu diesem Verhalten finden Sie im Abschnitt Konfigurationsvalidierung.

Ungültige Konfigurationen finden

Da ungültige benutzerdefinierte Ressourcen asynchron verworfen werden, müssen Sie ihren Status aktiv prüfen. Viele Fehlerdetails für eine Ressource werden in das Statusfeld der entsprechenden Ressource zurückgeschrieben und im Flottenfeature-Status angezeigt.

Mit dem folgenden Befehl können Sie die ungültigen Konfigurationen finden und die spezifischen Fehlermeldungen aufrufen. Hinweis: Die Befehle gelten speziell für Istio-Ressourcen. Möglicherweise werden hier nicht alle Validierungsfehler angezeigt.

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

Die Ausgabe sieht etwa so aus:

{
  "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"
    }
  ]
}