Cloud Service Mesh-Kompatibilität
In diesem Leitfaden wird beschrieben, wie Sie die Kompatibilität einer Flotte für die Modernisierung der Steuerungsebene bewerten, indem Sie bestätigen, dass ihre 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. Wenn Sie diese Prüfungen aktivieren, werden keine Änderungen an Ihrer Flotte oder Ihren Clustern vorgenommen. Es wird lediglich 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 des Flotten-Hostprojekts.
Im Allgemeinen ist die FLEET_PROJECT_ID der Name des Projekts.
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 Modernisierungskompatibilitätsbedingungen aus den Mitgliedschaftsstatus sowie der Status ModernizationCompatible aus den einzelnen Istio-CRs entfernt.
Kompatibilität
Die Modernisierungskompatibilität wird mithilfe von Bedingungen sowohl auf Flotten- als auch auf Mitgliedschaftsebene (Cluster) gemeldet. Das System führt verschiedene Prüfungen zu unterschiedlichen Zeiten durch. Alle Prüfungen werden mindestens einmal täglich ausgeführt. Es kann bis zu einem Tag dauern, bis der Status aktualisiert wird, nachdem Sie Prüfungen aktiviert oder Fehler behoben haben.
Rufen Sie den aktuellen Mesh-Status mit dem folgenden Befehl ab, um diese Ergebnisse zu sehen:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Kompatibilität auf Flottenebene
Den allgemeinen Modernisierungsstatus Ihrer Flotte finden Sie unter state.servicemesh.conditions.
Flotte ist kompatibel: Wenn Ihre Flotte kompatibel ist, sehen Sie eine Bedingung mit dem Code
MODERNIZATION_COMPATIBLE:name: projects/project_id/locations/global/features/servicemesh state: servicemesh: conditions: - code: MODERNIZATION_COMPATIBLE details: 'Fleet is eligible for modernization.' documentationLink: https://cloud.google.com/service-mesh/... severity: INFOFlotte ist nicht kompatibel: Wenn Ihre Flotte noch nicht für die Modernisierung geeignet ist, sehen Sie eine Bedingung mit dem Code
MODERNIZATION_INCOMPATIBLE:name: projects/project_id/locations/global/features/servicemesh state: servicemesh: conditions: - code: MODERNIZATION_INCOMPATIBLE details: 'Fleet is not yet eligible for modernization.' documentationLink: https://cloud.google.com/service-mesh/... severity: INFOWenn Ihre Flotte nicht kompatibel ist, sehen Sie sich die Bedingungen für bestimmte Lücken an. Prüfen Sie unter
membershipStates.servicemeshauf zusätzliche Bedingungen auf Flottenebene mit dem SchweregradWARNINGoderERRORsowie auf Bedingungen auf Clusterebene, um alle Blockierungen zu beheben.
Kompatibilität auf Clusterebene
Suchen Sie unter membershipStates.servicemesh für jeden bereitgestellten Cloud Service Mesh-Cluster in der Flotte nach Bedingungen mit dem Schweregrad WARNING oder ERROR. Wenn Inkompatibilitäten vorhanden sind, sieht die Ausgabe etwa 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 der documentationLink, die in jeder Bedingung angegeben ist, 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-Anmerkungen:
Problematische Anmerkungen identifizieren: Suchen Sie im Feld
detailsder Statusbedingung nach den nicht unterstützten oder ungültigen Anmerkungsschlüsseln. Alle Pods mit den problematischen Annotationsschlüsseln finden.Beheben und bestätigen:
- Ändern Sie die YAML-Spezifikationen für Ihre Deployments oder Pods, damit sie nur unterstützte Annotationen verwenden. Alle anderen Annotationen werden nicht unterstützt. Entfernen Sie alle nicht unterstützten Anmerkungen, korrigieren Sie alle ungültigen Werte und wenden Sie die aktualisierte YAML-Datei noch einmal auf Ihren Cluster an.
- Sobald alle Pod-Anmerkungen 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 (Custom Resources, CRs), die nicht unterstützte Funktionen oder Felder verwenden oder ungültige Werte enthalten.
- Ungültige oder nicht unterstützte Istio MeshConfig-Einstellungen.
- Skalierbarkeitslimits werden überschritten.
- 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 zum Status analysieren: Prüfen Sie das Feld
detailsdes Status. Darin werden einzelne Fehler zusammengefasst und die Ressourcentypen mit Konfigurationsproblemen identifiziert. Im Beispiel für die bereitgestellten Details müssten Sie die Probleme mit der Skalierung und MeshConfig beheben und die RessourcenGatewayundServiceEntryauf Fehler prüfen.Inkompatible Ressourcen identifizieren und untersuchen: Mit dem folgenden Beispielskript können Sie Istio-benutzerdefinierte Ressourcen (Custom Resources, CRs) auflisten, die die Kompatibilitätsprüfungen nicht bestehen. Dieses Skript wird als Beispiel bereitgestellt. Prüfen und analysieren Sie es, um sicherzustellen, dass es Ihren Umgebungs- und Betriebsanforderungen entspricht, bevor Sie es in Ihrem Cluster ausführen. Für das Script müssen
kubectlundjqinstalliert sein. Die Ausgabe enthält die spezifischen Fehlerdetails, die unterstatus.conditions(Typ:ModernizationCompatible, Status:"False") jeder Ressource gefunden wurden.for resource in authorizationpolicies destinationrules envoyfilters gateways peerauthentications proxyconfigs 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 korrigieren und anwenden: Ändern Sie die 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ützte Features des verwalteten Cloud Service Mesh und Nicht unterstützte Istio-APIs. Aktualisieren Sie beispielsweise im bereitgestellten Beispiel die
ServiceEntry-Auflösung vonDNS_ROUND_ROBINaufDNS.Korrekturen überprüfen: Nachdem Sie Korrekturen vorgenommen haben, kann es bis zu 24 Stunden dauern, bis der Status durch regelmäßige Prüfungen aktualisiert wird.
Die Bedingung
ModernizationCompatiblefür die korrigierten Ressourcen sollte sich in den Status"True"ändern. Prüfen Sie den Status der Ressource mit folgendem Befehl: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 damit zusammenhängenden Probleme behoben sind, wird die BedingungMODERNIZATION_INCOMPATIBLE_CONFIGfür dieses Abo nicht mehr angezeigt.
Inkompatible Flottengröße beheben
Der Code MODERNIZATION_INCOMPATIBLE_FLEET_SCALE gibt an, dass die Flotte nicht auf die TRAFFIC_DIRECTOR-Steuerungsebene modernisiert werden kann, da die Anzahl der Ressourcen in der Flotte die für die Modernisierung unterstützten Grenzwerte überschreitet.
In dieser Phase unterstützen wir die Modernisierung von Flotten mit den folgenden Einschränkungen:
- Bis zu 1.500 Datenebenen-Endpunkte (Proxys) in der gesamten Flotte.
- Bis zu 200 Cloud Service Mesh-Dienste in der Flotte.