Behandeln von Erweiterungsproblemen für Azure Arc-fähige Kubernetes-Cluster

Dieses Dokument enthält Tipps zur Problembehandlung für häufige Probleme im Zusammenhang mit Clustererweiterungen, z. B. GitOps (Flux v2) und Open Service Mesh.

Hilfe zur Problembehandlung allgemeiner Probleme mit Azure Arc-fähigen Kubernetes finden Sie unter Problembehandlung für Azure Arc-fähige Kubernetes.

GitOps (Flux v2)

Hinweis

Die Flux v2-Erweiterung kann entweder in Azure Arc-fähigen Kubernetes-Clustern oder Azure Kubernetes Service-Clustern (AKS-Clustern) verwendet werden. Diese Tipps zur Problembehandlung gelten in der Regel unabhängig vom Clustertyp.

Um allgemeine Hilfe bei der Problembehandlung von fluxConfigurations -Ressourcen zu erhalten, führen Sie diese Azure CLI-Befehle mit dem angegebenen --debug -Parameter aus:

az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug

Webhook/Trockenlauffehler

Wenn die Abstimmung von Flux mit einem Fehler wie dry-run failed, error: admission webhook "<webhook>" does not support dry run fehlschlägt, können Sie das Problem beheben, indem Sie die ValidatingWebhookConfiguration oder die MutatingWebhookConfiguration suchen und sideEffects auf None oder NoneOnDryRun festlegen:

Weitere Informationen finden Sie unter Beheben von webhook does not support dry run-Fehlern.

Fehler beim Installieren der microsoft.flux -Erweiterung

Die microsoft.flux-Erweiterung installiert die Flux-Controller und Azure GitOps-Agents in Ihren Kubernetes-Clustern mit Azure Arc-Unterstützung oder Azure Kubernetes Service-Clustern (AKS). Wenn die Erweiterung noch nicht in einem Cluster installiert ist und Sie für diesen Cluster eine GitOps-Konfigurationsressource erstellen, wird die Erweiterung automatisch installiert.

Wenn während der Installation ein Fehler auftritt oder sich die Erweiterung in einem fehlerhaften Zustand befindet, stellen Sie sicher, dass der Cluster keine Richtlinien enthält, die die Erstellung des flux-system -Namespaces oder der Ressourcen in diesem Namespace einschränken.

Stellen Sie für einen AKS-Cluster sicher, dass für das Abonnement das Microsoft.ContainerService/AKS-ExtensionManager -Featureflag aktiviert ist.

az feature register --namespace Microsoft.ContainerService --name AKS-ExtensionManager

Führen Sie danach diesen Befehl aus, um festzustellen, ob andere Probleme vorhanden sind. Legen Sie den Clustertyp (-t) auf connectedClusters für einen Arc-fähigen Cluster oder managedClusters für einen AKS-Cluster fest. Der Name der microsoft.flux -Erweiterung ist "flux", wenn die Erweiterung während der Erstellung einer GitOps-Konfiguration automatisch installiert wurde. Suchen Sie im statuses-Objekt nach Informationen.

az k8s-extension show -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <connectedClusters or managedClusters>

Die angezeigten Ergebnisse können Ihnen dabei helfen, zu bestimmen, was schief gelaufen ist und wie es behoben werden kann. Mögliche Abhilfemaßnahmen sind:

  • Erzwingen des Löschens der Erweiterung durch Ausführen von az k8s-extension delete --force -g <RESOURCE_GROUP> -c <CLUSTER_NAME> -n flux -t <managedClusters OR connectedClusters>
  • Deinstallieren Sie die Helm-Version, indem Sie helm uninstall flux -n flux-system ausführen
  • Löschen Sie den flux-system -Namespace aus dem Cluster, indem Sie kubectl delete namespaces flux-system ausführen

Nachdem Sie dies durchgeführt haben, können Sie entweder eine Flux-Konfiguration neu erstellen, die die microsoft.flux -Erweiterung automatisch installiert, oder Sie können die Flux-Erweiterung manuell neu installieren.

Fehler beim Installieren der microsoft.flux -Erweiterung in einem Cluster mit aktivierter Microsoft Entra Pod Identity

Wenn Sie versuchen, die Flux-Erweiterung in einem Cluster zu installieren, für den Microsoft Entra-Podidentität aktiviert ist, kann im Erweiterungs-Agent-Pod ein Fehler auftreten:

{"Message":"2021/12/02 10:24:56 Error: in getting auth header : error {adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID <REDACTED>\n}","LogType":"ConfigAgentTrace","LogLevel":"Information","Environment":"prod","Role":"ClusterConfigAgent","Location":"westeurope","ArmId":"/subscriptions/<REDACTED>/resourceGroups/<REDACTED>/providers/Microsoft.Kubernetes/managedclusters/<REDACTED>","CorrelationId":"","AgentName":"FluxConfigAgent","AgentVersion":"0.4.2","AgentTimestamp":"2021/12/02 10:24:56"}

Der Erweiterungsstatus wird auch als Failed zurückgegeben.

"{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"ExtensionCreationFailed\",\"message\":\" error: Unable to get the status from the local CRD with the error : {Error : Retry for given duration didn't get any results with err {status not populated}}\"}]}}",

In diesem Fall versucht der Erweiterungs-Agent-Pod, sein Token aus IMDS im Cluster abzurufen. die Tokenanforderung wird jedoch von der Pod-Identität abgefangen). Um dieses Problem zu beheben, führen Sie ein Upgrade auf die neueste Version der microsoft.flux -Erweiterung durch.

Probleme bei der Kubelet-Identität beim Installieren der microsoft.flux -Erweiterung in einem AKS-Cluster

Bei AKS-Clustern ist eine der Authentifizierungsoptionen Kubelet-Identität, unter Verwendung einer vom Benutzer zugewiesenen verwalteten Identität. Durch die Verwendung der Kubelet-Identität kann der Betriebsaufwand reduziert und die Sicherheit beim Herstellen einer Verbindung mit Azure-Ressourcen wie Azure Container Registry erhöht werden.

Um Flux die Kubelet-Identität verwenden zu lassen, fügen Sie den Parameter --config useKubeletIdentity=true bei der Installation der Flux-Erweiterung hinzu.

az k8s-extension create --resource-group <resource-group> --cluster-name <cluster-name> --cluster-type managedClusters --name flux --extension-type microsoft.flux --config useKubeletIdentity=true

Sicherstellen, dass Speicher- und CPU-Anforderungen für microsoft.flux Erweiterungsinstallation erfüllt sind

Die in Ihrem Kubernetes-Cluster installierten Controller mit der microsoft.flux-Erweiterung setzen die folgenden CPU- und Arbeitsspeicherressourcenlimits für eine ordnungsgemäße Planung auf Kubernetes-Clusterknoten voraus. Stellen Sie sicher, dass Ihr Cluster die mindesten Arbeitsspeicher- und CPU-Ressourcen erfüllen kann, die angefordert werden können. Beachten Sie auch die hier gezeigten maximalen Grenzwerte für potenzielle CPU- und Arbeitsspeicherressourcenanforderungen.

Containername Minimale CPU Mindestarbeitsspeicher Maximale CPU-Nutzung Arbeitsspeichermaximum
fluxconfig-agent 5 m 30 Mi 50 m 150 Mi
fluxconfig-controller 5 m 30 Mi 100 m 150 Mi
fluent-bit 5 m 30 Mi 20 m 150 Mi
helm-controller 100 m 64 Mi 1000 m 1 Gi
source-controller 50 m 64 Mi 1000 m 1 Gi
kustomize-controller 100 m 64 Mi 1000 m 1 Gi
notification-controller 100 m 64 Mi 1000 m 1 Gi
image-automation-controller 100 m 64 Mi 1000 m 1 Gi
image-reflector-controller 100 m 64 Mi 1000 m 1 Gi

Wenn Sie eine benutzerdefinierte oder integrierte Azure Gatekeeper-Richtlinie wie Kubernetes cluster containers CPU and memory resource limits should not exceed the specified limits aktiviert haben, die die Ressourcen für Container in Kubernetes-Clustern einschränkt, müssen Sie entweder sicherstellen, dass die Ressourcenbeschränkungen in der Richtlinie größer sind als die oben gezeigten Grenzwerte, oder dass der flux-system -Namespace Teil des excludedNamespaces -Parameters in der Richtlinienzuweisung ist.

Flux v1

Hinweis

Wir empfehlen, so schnell wie möglich zu Flux v2 zu migrieren. Die Unterstützung für Flux v1-basierte Clusterkonfigurationsressourcen, die vor dem 1. Januar 2024 erstellt wurden, endet am 24. Mai 2025. Ab dem 1. Januar 2024 können Sie keine neuen Flux v1-basierten Clusterkonfigurationsressourcen mehr erstellen.

Führen Sie die folgenden Azure CLI-Befehle aus, um Probleme mit der sourceControlConfigurations -Ressource in Flux v1 zu beheben, wobei --debug Parameter angegeben ist:

az provider show -n Microsoft.KubernetesConfiguration --debug
az k8s-configuration flux create <parameters> --debug

Azure Monitor Container Insights

Dieser Abschnitt enthält Hilfe bei der Problembehandlung bei Azure Monitor Container Insights für Azure Arc-fähige Kubernetes-Cluster.

Aktivieren des privilegierten Modus für Canonical Charmed Kubernetes-Cluster

Azure Monitor Container Insights erfordert, dass das DaemonSet im privilegierten Modus ausgeführt wird. Führen Sie den folgenden Befehl aus, um einen Canonical Charmed Kubernetes-Cluster für die Überwachung einzurichten:

juju config kubernetes-worker allow-privileged=true

Azure Monitor Agent (AMA) kann nicht auf Oracle Linux 9.x installiert werden

Wenn Sie versuchen, den Azure Monitor Agent (AMA) auf einem Oracle Linux (RHEL) 9.x Kubernetes-Cluster zu installieren, funktionieren die AMA-Pods und der AMA-RS-Pod aufgrund des addon-token-adapter -Containers im Pod möglicherweise nicht ordnungsgemäß. Bei diesem Fehler wird beim Überprüfen der Protokolle des ama-logs-rs -Pods, addon-token-adapter container, die Ausgabe ähnlich wie folgt angezeigt:

Command: kubectl -n kube-system logs ama-logs-rs-xxxxxxxxxx-xxxxx -c addon-token-adapter
 
Error displayed: error modifying iptable rules: error adding rules to custom chain: running [/sbin/iptables -t nat -N aad-metadata --wait]: exit status 3: modprobe: can't change directory to '/lib/modules': No such file or directory

iptables v1.8.9 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.

Dieser Fehler tritt auf, da die Installation der Erweiterung das iptable_nat -Modul erfordert, dieses Modul jedoch nicht automatisch in Oracle Linux (RHEL) 9.x-Verteilungen geladen wird.

Um dieses Problem zu beheben, müssen Sie das iptables_nat -Modul explizit auf jeden Knoten im Cluster laden, indem Sie den modprobe -Befehl sudo modprobe iptables_nat verwenden. Nachdem Sie sich bei jedem Knoten angemeldet und das iptable_nat -Modul manuell hinzugefügt haben, wiederholen Sie die AMA-Installation.

Hinweis

Die Asuführung dieses Schrittes macht das iptables_nat -Modul nicht beständig.

Open Service Mesh mit Azure Arc-Unterstützung

Dieser Abschnitt enthält Befehle, die Sie verwenden können, um die Bereitstellung der Open Service Mesh (OSM) -Erweiterungskomponenten in Ihrem Cluster zu überprüfen und zu beheben.

Überprüfen der OSM-Controllerbereitstellung

kubectl get deployment -n arc-osm-system --selector app=osm-controller

Wenn der OSM-Controller fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME             READY   UP-TO-DATE   AVAILABLE   AGE
osm-controller   1/1     1            1           59m

Überprüfen von OSM-Controller-Pods

kubectl get pods -n arc-osm-system --selector app=osm-controller

Wenn der OSM-Controller fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME                            READY   STATUS    RESTARTS   AGE
osm-controller-b5bd66db-wglzl   0/1     Evicted   0          61m
osm-controller-b5bd66db-wvl9w   1/1     Running   0          31m

Obwohl ein Controller irgendwann Entfernt wurde, gibt es einen anderen, nämlich READY 1/1 und Running mit 0 Neustarts. Wenn die Spalte READY einen anderen Wert als 1/1 aufweist, befindet sich das Dienstgittermodell in einem defekten Zustand. Wenn die Spalte READY den Wert 0/1 anzeigt, bedeutet dies, dass der Steuerungsebenencontainer abstürzt.

Verwenden Sie den folgenden Befehl, um Controller-Protokolle zu überprüfen:

kubectl logs -n arc-osm-system -l app=osm-controller

Wenn die Spalte READY eine Zahl höher als 1 aufweist, nachdem die / darauf hinweist, dass Beiwagen installiert sind. OSM Controller funktioniert in der Regel nicht ordnungsgemäß mit angebundenen Beiwagen.

Überprüfen des OSM-Controllerdiensts

kubectl get service -n arc-osm-system osm-controller

Wenn der OSM-Controller fehlerfrei ist, sehen Sie die folgende Ausgabe:

NAME             TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)              AGE
osm-controller   ClusterIP   10.0.31.254   <none>        15128/TCP,9092/TCP   67m

Hinweis

Die CLUSTER-IP unterscheiden sich. Der Dienst NAME und PORT(S) sollten mit dem hier Angezeigten übereinstimmen.

Überprüfen von OSM-Controllerendpunkten

kubectl get endpoints -n arc-osm-system osm-controller

Wenn der OSM-Controller fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME             ENDPOINTS                              AGE
osm-controller   10.240.1.115:9092,10.240.1.115:15128   69m

Wenn der Cluster keine ENDPOINTS für osm-controller hat, ist die Steuerebene fehlerhaft. Dieser fehlerhafte Zustand bedeutet, dass der Controller-Pod abgestürzt ist oder dass er nie ordnungsgemäß bereitgestellt wurde.

Überprüfen der OSM-Injektorbereitstellung

kubectl get deployments -n arc-osm-system osm-injector

Wenn der OSM-Injektor fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME           READY   UP-TO-DATE   AVAILABLE   AGE
osm-injector   1/1     1            1           73m

OSM-Injektor-Pod überprüfen

kubectl get pod -n arc-osm-system --selector app=osm-injector

Wenn der OSM-Injektor fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME                            READY   STATUS    RESTARTS   AGE
osm-injector-5986c57765-vlsdk   1/1     Running   0          73m

Die Spalte READY muss 1/1 lauten. Jeder andere Wert gibt einen fehlerhaften OSM-Injektor-Pod an.

Überprüfen des OSM-Injektordiensts

kubectl get service -n arc-osm-system osm-injector

Wenn der OSM-Injektor fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME           TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
osm-injector   ClusterIP   10.0.39.54   <none>        9090/TCP   75m

Stellen Sie sicher, dass die für den Dienst osm-injector aufgeführte IP-Adresse 9090 lautet. Es darf keine EXTERNAL-IP vorhanden sein.

Überprüfen von OSM-Injektorendpunkten

kubectl get endpoints -n arc-osm-system osm-injector

Wenn der OSM-Injektor fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME           ENDPOINTS           AGE
osm-injector   10.240.1.172:9090   75m

Damit OSM funktioniert, muss mindestens ein Endpunkt für osm-injector vorhanden sein. Die IP-Adresse Ihrer OSM-Injektorendpunkte variiert, der Port 9090 muss jedoch identisch sein.

Überprüfen der Webhooks Validieren und Mutieren

kubectl get ValidatingWebhookConfiguration --selector app=osm-controller

Wenn der Überprüfende Webhook fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME                     WEBHOOKS   AGE
osm-validator-mesh-osm   1          81m
kubectl get MutatingWebhookConfiguration --selector app=osm-injector

Wenn der Mutierende Webhook fehlerfrei ist, wird die Ausgabe ähnlich wie folgt angezeigt:

NAME                  WEBHOOKS   AGE
arc-osm-webhook-osm   1          102m

Schauen Sie mithilfe dieses Befehls nach dem Dienst und dem CA-Bundle des Überprüfenden Webhooks:

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq '.webhooks[0].clientConfig.service'

Eine gut konfigurierte Überprüfende -Webhookkonfiguration führt zu einer Ausgabe wie die folgende:

{
  "name": "osm-config-validator",
  "namespace": "arc-osm-system",
  "path": "/validate",
  "port": 9093
}

Überprüfen Sie den Dienst und das CA-Bundle des Webhooks Mutieren mit folgendem Befehl:

kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq '.webhooks[0].clientConfig.service'

Eine gut konfigurierte Mutierende -Webhookkonfiguration führt zu einer Ausgabe wie die folgende:

{
  "name": "osm-injector",
  "namespace": "arc-osm-system",
  "path": "/mutate-pod-creation",
  "port": 9090
}

Überprüfen Sie mit dem folgenden Befehl, ob der OSM-Controller dem Webhook Validieren (oder Mutieren) ein CA-Bundle übergeben hat:

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c
kubectl get MutatingWebhookConfiguration arc-osm-webhook-osm -o json | jq -r '.webhooks[0].clientConfig.caBundle' | wc -c

Beispielausgabe:

1845

Die Zahl in der Ausgabe gibt die Anzahl von Bytes oder die Größe des CA-Bundles an. Wenn die Ausgabe leer, 0 oder eine Zahl unter 1000 ist, wird das CA-Bundle nicht ordnungsgemäß bereitgestellt. Ohne korrektes CA-Bundle gibt der ValidatingWebhook einen Fehler aus.

Überprüfen der Ressource osm-mesh-config

Überprüfen Sie, ob die Ressource vorhanden ist:

kubectl get meshconfig osm-mesh-config -n arc-osm-system

Überprüfen Sie den OSM MeshConfig-Inhalt:

kubectl get meshconfig osm-mesh-config -n arc-osm-system -o yaml

Eine ähnliche Ausgabe wie die folgende sollte angezeigt werden:

apiVersion: config.openservicemesh.io/v1alpha1
kind: MeshConfig
metadata:
  creationTimestamp: "0000-00-00A00:00:00A"
  generation: 1
  name: osm-mesh-config
  namespace: arc-osm-system
  resourceVersion: "2494"
  uid: 6c4d67f3-c241-4aeb-bf4f-b029b08faa31
spec:
  certificate:
    certKeyBitSize: 2048
    serviceCertValidityDuration: 24h
  featureFlags:
    enableAsyncProxyServiceMapping: false
    enableEgressPolicy: true
    enableEnvoyActiveHealthChecks: false
    enableIngressBackendPolicy: true
    enableMulticlusterMode: false
    enableRetryPolicy: false
    enableSnapshotCacheMode: false
    enableWASMStats: true
  observability:
    enableDebugServer: false
    osmLogLevel: info
    tracing:
      enable: false
  sidecar:
    configResyncInterval: 0s
    enablePrivilegedInitContainer: false
    logLevel: error
    resources: {}
  traffic:
    enableEgress: false
    enablePermissiveTrafficPolicyMode: true
    inboundExternalAuthorization:
      enable: false
      failureModeAllow: false
      statPrefix: inboundExtAuthz
      timeout: 1s
    inboundPortExclusionList: []
    outboundIPRangeExclusionList: []
    outboundPortExclusionList: []
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

Ressourcenwerte von osm-mesh-config:

Schlüssel Typ Standardwert Beispiele für Kubectl-Patchbefehle
spec.traffic.enableEgress bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enableEgress":false}}}' --type=merge
spec.traffic.enablePermissiveTrafficPolicyMode bool true kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"enablePermissiveTrafficPolicyMode":true}}}' --type=merge
spec.traffic.outboundPortExclusionList array [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundPortExclusionList":[6379,8080]}}}' --type=merge
spec.traffic.outboundIPRangeExclusionList array [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"outboundIPRangeExclusionList":["10.0.0.0/32","1.1.1.1/24"]}}}' --type=merge
spec.traffic.inboundPortExclusionList array [] kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"traffic":{"inboundPortExclusionList":[6379,8080]}}}' --type=merge
spec.certificate.serviceCertValidityDuration Zeichenfolge "24h" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"certificate":{"serviceCertValidityDuration":"24h"}}}' --type=merge
spec.observability.enableDebugServer bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"enableDebugServer":false}}}' --type=merge
spec.observability.osmLogLevel Zeichenfolge "info" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"osmLogLevel": "info"}}}}' --type=merge
spec.observability.tracing.enable bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"observability":{"tracing":{"enable":true}}}}' --type=merge
spec.sidecar.enablePrivilegedInitContainer bool false kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"enablePrivilegedInitContainer":true}}}' --type=merge
spec.sidecar.logLevel Zeichenfolge "error" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"sidecar":{"logLevel":"error"}}}' --type=merge
spec.featureFlags.enableWASMStats bool "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableWASMStats":"true"}}}' --type=merge
spec.featureFlags.enableEgressPolicy bool "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEgressPolicy":"true"}}}' --type=merge
spec.featureFlags.enableMulticlusterMode bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableMulticlusterMode":"false"}}}' --type=merge
spec.featureFlags.enableSnapshotCacheMode bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableSnapshotCacheMode":"false"}}}' --type=merge
spec.featureFlags.enableAsyncProxyServiceMapping bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableAsyncProxyServiceMapping":"false"}}}' --type=merge
spec.featureFlags.enableIngressBackendPolicy bool "true" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableIngressBackendPolicy":"true"}}}' --type=merge
spec.featureFlags.enableEnvoyActiveHealthChecks bool "false" kubectl patch meshconfig osm-mesh-config -n arc-osm-system -p '{"spec":{"featureFlags":{"enableEnvoyActiveHealthChecks":"false"}}}' --type=merge

Überprüfen der Namespaces

Hinweis

Der arc-osm-system-Namespace nimmt niemals an einem Dienstgitter teil und wird nie mit dem hier gezeigten Schlüssel/den hier gezeigten Werten beschriftet oder kommentiert.

Wir verwenden den osm namespace add Befehl, um Namespaces mit einem bestimmten Service Mesh zu verknüpfen. Wenn ein Kubernetes-Namespace Teil des Gitters ist, führen Sie die folgenden Schritte aus, um zu bestätigen, dass die Anforderungen erfüllt werden.

Zeigen Sie die Anmerkungen des Namespace bookbuyer an:

kubectl get namespace bookbuyer -o json | jq '.metadata.annotations'

Die folgenden Eigenschaften müssen vorhanden sein:

{
  "openservicemesh.io/sidecar-injection": "enabled"
}

Zeigen Sie die Bezeichnungen des Namespace bookbuyer an:

kubectl get namespace bookbuyer -o json | jq '.metadata.labels'

Die folgenden Eigenschaften müssen vorhanden sein:

{
  "openservicemesh.io/monitored-by": "osm"
}

Wenn Sie osm CLI nicht verwenden, können Sie diese Anmerkungen auch manuell zu Ihren Namespaces hinzufügen. Wenn ein Namespace nicht mit "openservicemesh.io/sidecar-injection": "enabled" annotiert oder nicht mit "openservicemesh.io/monitored-by": "osm" beschriftet ist, fügt der OSM-Injektor keine Envoy-Beiwagen hinzu.

Hinweis

Nachdem osm namespace add aufgerufen wurde, werden nur neue Pods mit dem Sidecar „Envoy“ eingefügt. Vorhandene Pods müssen mit dem kubectl rollout restart deployment -Befehl neu gestartet werden.

Überprüfen der SMI-CRDs

Überprüfen Sie mit dem folgenden Befehl, ob der Cluster über die erforderlichen benutzerdefinierten Ressourcendefinitionen (Custom Resource Definitions, CRDs) verfügt:

kubectl get crds

Stellen Sie sicher, dass die CRDs den Versionen entsprechen, die in der Versionszweig verfügbar sind. Um zu bestätigen, welche CRD-Versionen verwendet werden, besuchen Sie die Seite zu unterstützten SMI-Versionen, und wählen Sie Ihre Version aus der Dropdownliste für Releases aus.

Rufen Sie die Versionen der installierten CRDs mit dem folgenden Befehl ab:

for x in $(kubectl get crds --no-headers | awk '{print $1}' | grep 'smi-spec.io'); do
    kubectl get crd $x -o json | jq -r '(.metadata.name, "----" , .spec.versions[].name, "\n")'
done

Wenn CRDs fehlen, verwenden Sie die folgenden Befehle, um sie im Cluster zu installieren. Ersetzen Sie die Version in diesen Befehlen nach Bedarf (z. B. v1.1.0 wäre Release-v1.1).

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_http_route_group.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_tcp_route.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_access.yaml

kubectl apply -f https://raw.githubusercontent.com/openservicemesh/osm/release-v1.0/cmd/osm-bootstrap/crds/smi_traffic_split.yaml

Informationen zu CRD-Änderungen zwischen Releases finden Sie unter OSM-Versionshinweise.

Behandlung von Problemen mit der Zertifikatverwaltung

Informationen dazu, wie OSM Zertifikate für Envoy-Proxys ausstellt und verwaltet, die auf Anwendungspods ausgeführt werden, finden Sie auf der OSM-Dokumentationswebsite.

Upgrade von Envoy

Wenn ein neuer Pod in einem Namespace erstellt wird, der vom Add-On überwacht wird, fügt OSM einen Envoy-Proxy-Beiwagen in diesen Pod ein. Wenn die Envoy-Version aktualisiert werden muss, befolgen Sie die Schritte im Upgradehandbuch auf der OSM-Dokumentationswebsite.

Nächste Schritte