Cloud Service Mesh-Kompatibilität
In diesem Leitfaden wird beschrieben, wie Sie die Kompatibilität einer Flotte für die Modernisierung der Steuerungsebene bewerten können. Dazu bestätigen Sie, dass Konfiguration, Infrastruktur und Skalierung mit der TRAFFIC_DIRECTOR-Implementierung der Steuerungsebene kompatibel sind.
Kompatibilitätsprüfungen aktivieren oder deaktivieren
Um die Kompatibilitätsprüfungen zu starten, aktivieren Sie den Validierungsmodus für die Flotte. Dadurch wird eine fortlaufende Prüfung aller Istio-Konfigurationen, Infrastrukturkonfigurationen und Skalierungsparameter ausgelöst. Durch das Aktivieren dieser Prüfungen werden keine Änderungen an Ihrer Flotte oder Ihren Clustern vorgenommen. Es wird nur die Kompatibilitätsberichterstellung aktiviert.
Prüfungen aktivieren
Führen Sie den folgenden gcloud-Befehl aus, um die Kompatibilitätsprüfung zu starten:
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
Ersetzen Sie FLEET_PROJECT_ID durch die ID Ihres Flotten-Hostprojekts.
Im Allgemeinen hat FLEET_PROJECT_ID denselben Namen wie das Projekt.
Nach der Aktivierung beginnt Cloud Service Mesh mit der Bewertung der Flotte und aller in der Flotte bereitgestellten Cloud Service Mesh-Cluster auf Modernisierungskompatibilität.
Prüfungen deaktivieren
Führen Sie den folgenden Befehl aus, um die Berichterstellung von Kompatibilitätsergebnissen zu beenden:
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
Mit diesem Befehl werden die Bedingungen für die Modernisierungskompatibilität aus den Mitgliedschaftsstatus sowie der Status ModernizationCompatible aus einzelnen benutzerdefinierten Istio-Ressourcen entfernt.
Kompatibilität
Die Modernisierungskompatibilität wird sowohl auf Flotten- als auch auf Mitgliedschaftsebene (Cluster) mit Bedingungen gemeldet. Das System führt zu verschiedenen Zeiten verschiedene Prüfungen durch. Alle Prüfungen werden mindestens einmal täglich ausgeführt. Nach dem Aktivieren der Prüfungen oder dem Anwenden von Korrekturen kann es bis zu einem Tag dauern, bis der Status aktualisiert wird.
Rufen Sie die neuesten Mesh-Status mit dem folgenden Befehl ab, um diese Ergebnisse anzusehen:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Kompatibilität auf Clusterebene
Suchen Sie unter membershipStates.servicemesh nach Bedingungen mit dem Schweregrad WARNING oder ERROR für jeden in der Flotte bereitgestellten Cloud Service Mesh-Cluster. Wenn Inkompatibilitäten vorhanden sind, sieht die Ausgabe so aus:
membershipSpecs:
projects/project_id/locations/global/memberships/cluster-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/cluster-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
- code: WORKLOAD_IDENTITY_REQUIRED
details: 'Workload Identity is not enabled for the cluster or at least one of the node pools.'
documentationLink: https://cloud.google.com/...
severity: ERROR
...
Folgen Sie dem documentationLink in jeder Bedingung, um die jeweilige Inkompatibilität zu verstehen und zu beheben.
Kompatibilitätsprobleme beheben
Inkompatible Pod-Annotationen beheben
Der Code MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION gibt an, dass der Cluster nicht auf die TRAFFIC_DIRECTOR-Steuerungsebene modernisiert werden kann, da bestimmte Pods nicht unterstützte oder ungültige Istio-Annotationen haben.
Beispielausgabe des Befehls gcloud container fleet mesh describe mit der für die Mitgliedschaft festgelegten Bedingung MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION:
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
So beheben Sie diese Pod-Annotationen:
Problematische Annotationen identifizieren: Prüfen Sie das Feld
detailsder Status bedingung, um die nicht unterstützten oder ungültigen Annotationsschlüssel zu finden. Suchen Sie alle Pods mit den problematischen Annotationsschlüsseln.Beheben und prüfen:
- Ändern Sie die YAML-Spezifikationen für Ihre Bereitstellungen oder Pods, um die identifizierten Annotationen zu entfernen oder zu ändern. Achten Sie darauf, dass sie keine nicht unterstützten Annotationenenthalten. Wenden Sie die aktualisierte YAML-Datei noch einmal auf Ihren Cluster an.
- Sobald alle Pod-Annotationen korrigiert wurden, wird die Bedingung
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONfür diese Mitgliedschaft nicht mehr angezeigt.
Inkompatible Konfigurationen beheben
Der Code MODERNIZATION_INCOMPATIBLE_CONFIG gibt an, dass der Cluster aufgrund inkompatibler Konfigurationen nicht auf die TRAFFIC_DIRECTOR-Steuerungsebene modernisiert werden kann. Diese Inkompatibilitäten können folgende Ursachen haben:
- Bestimmte benutzerdefinierte Istio-Ressourcen, die nicht unterstützte Features oder Felder verwenden oder ungültige Werte enthalten.
- Ungültige oder nicht unterstützte Istio-MeshConfig-Einstellungen.
- Überschreiten der Skalierungslimits.
- Verwendung nicht unterstützter Dienst- oder Namespace-Annotationen.
Beispielausgabe des Befehls gcloud container fleet mesh describe mit der für die Mitgliedschaft festgelegten Bedingung MODERNIZATION_INCOMPATIBLE_CONFIG:
membershipSpecs:
projects/project_id/locations/global/memberships/membership-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_CONFIG
details: 'One or more configs have warnings. Due to the following reason(s): Istio sidecar scale exceeds limit, MeshConfig "accessLogFile" is unsupported. Invalid Config Types: [Gateway, ServiceEntry], where more details are shown on individual config resources.See documentation link for more detail.'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
So beheben Sie diese Konfigurationen:
Details der Bedingung analysieren: Prüfen Sie das Feld
detailsder Status bedingung. Darin werden einzelne Fehler zusammengefasst und die Ressourcentypen mit Konfigurationsproblemen identifiziert. Im Beispiel für die Details müssten Sie die Probleme mit der Skalierung und MeshConfig beheben und die RessourcenGatewayundServiceEntryauf Fehler prüfen.Inkompatible Ressourcen identifizieren und untersuchen: Verwenden Sie das folgende Skript, um alle benutzerdefinierten Istio-Ressourcen aufzulisten, bei denen die Kompatibilitäts prüfungen fehlgeschlagen sind. Für das Skript müssen
kubectlundjqinstalliert sein. Die Ausgabe enthält die spezifischen Fehlerdetails unterstatus.conditions(Typ:ModernizationCompatible, Status:"False") jeder Ressource.for resource in authorizationpolicies destinationrules gateways proxyconfigs peerauthentications requestauthentications serviceentries sidecars telemetries virtualservices wasmplugins workloadentries workloadgroups; do echo "--- Checking $resource ---" kubectl get $resource --all-namespaces -o json | \ jq -r '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "ModernizationCompatible" and .status == "False")) | {"kind": .kind, "name": .metadata.name, "namespace": .metadata.namespace, "message": [.status.conditions[] | select(.type == "ModernizationCompatible").message]}' doneBeispielausgabe :
--- Checking serviceentries --- { "kind": "ServiceEntry", "name": "demo-service-entry", "namespace": "se", "message": [ "WARNING: unsupported resolution type: DNS_ROUND_ROBIN" ] } .. --- Checking workloadentries --- { "kind": "WorkloadEntry", "name": "demo-we", "namespace": "default", "message": [ "WARNING: This API is not supported" ] }Konfigurationen beheben und anwenden: Ändern Sie Ihre YAML-Datei, indem Sie die nicht unterstützten Felder entfernen oder ungültige Werte durch kompatible Werte ersetzen. Weitere Informationen finden Sie in der Dokumentation zu unterstützten Features von verwaltetem Cloud Service Mesh und nicht unterstützten Istio-APIs. Aktualisieren Sie im Beispiel die
ServiceEntryAuflösung vonDNS_ROUND_ROBINzuDNS.Korrekturen prüfen: Nachdem Sie die Korrekturen angewendet haben, kann es bis zu 24 Stunden dauern, bis die regelmäßigen Prüfungen den Status aktualisieren.
Die Bedingung
ModernizationCompatiblefür die korrigierten Ressourcen sollte sich in den Status"True"ändern. Prüfen Sie den Status der Ressource mit:kubectl get resource name -n namespace -o yamlBeispielausgabe:
status: conditions: - lastTransitionTime: "2026-06-05T06:12:52.219963391Z" message: Resource is compatible for modernization reason: Compatible status: "True" type: ModernizationCompatibleFühren Sie den Befehl
gcloud container fleet mesh describenoch einmal aus. Sobald alle zugehörigen Probleme behoben sind, wird die BedingungMODERNIZATION_INCOMPATIBLE_CONFIGfür diese Mitgliedschaft nicht mehr angezeigt.