Aktualisieren von Istio
Verwenden Sie istioctl nicht, um die Version von Istio zu aktualisieren, die durch das verwaltete Add-on installiert wird. Wenn das verwaltete Istio-Add-on aktualisiert wird, wird auch die Istio-Version aktualisiert.
Aktualisierung auf eine kleinere Version des Istio-Add-ons
IBM Cloud hält alle Ihre Istio-Komponenten auf dem aktuellen Stand, indem Patchaktualisierungen auf die neueste Version von Istio, die von IBM Cloud Kubernetes Service unterstützt wird, durch automatische Rollouts zur Verfügung gestellt werden. Die unterstützten Versionen sind von IBM Cloud getestet und für die Verwendung in IBM Cloud Kubernetes Service zugelassen.
Vorbereitende Schritte:
Beachten Sie bei der Aktualisierung von Nebenversionen Folgendes:
-
Sie können das Istio-Add-on nur manuell um jeweils eine Versionsstife aktualisieren. Um das Istio-Add-on um zwei oder mehr Versionen zu aktualisieren, können Sie den manuellen Aktualisierungsprozess wiederholen oder das Add-on deinstallieren und dann die neuere Version installieren.
-
Sie können Ihr verwaltetes Istio-Add-on nicht auf eine frühere Version zurücksetzen. Um zu einer früheren Version zurückzukehren, müssen Sie das Add-on deinstallieren und dann die frühere Version installieren.
-
Wenn Sie die Komponenten zu Steuerung von Istio im Namensbereich
istio-systemauf die neueste Nebenversion aktualisieren, kann es dabei zu Änderungen mit Unterbrechung kommen. Prüfen Sie die folgenden Änderungen, die bei einer Aktualisierung der Nebenversion auftreten.- Beim Ausrollen von Aktualisierungen zu den Pods der Steuerebene werden die Pods neu erstellt. Die Istio-Steuerebene ist erst nach Abschluss der Aktualisierung vollständig verfügbar.
- Die Istio-Datenebene funktioniert auch während der Aktualisierung weiter. Es kann jedoch vorkommen, dass bei einem Teil des Datenverkehrs zu Apps im Servicenetz vorübergehend kurz Unterbrechungen auftreten.
- Die externe IP-Adresse für die Lastausgleichsfunktion
istio-ingressgatewayändert sich bei oder nach der Aktualisierung nicht.
So aktualisieren Sie die Nebenversion des Istio-Add-ons:
-
Prüfen Sie die aktuelle Version Ihres Istio-Add-ons.
kubectl get iop managed-istio -n ibm-operators -o jsonpath='{.metadata.annotations.version}' -
Überprüfen Sie, welche Versionen für das Istio-Add-on verfügbar sind.
ibmcloud ks addon-versions -
Überprüfen Sie die Änderungen, die in jeder Version im Änderungsprotokoll des Istio-Add-ons enthalten sind.
-
Wenn Sie ein Upgrade von Version 1.11 auf Version 1.12 durchführen und Ihre Istio-Komponenten mit Version 1.10 oder niedriger bereitgestellt wurden:
-
Führen Sie den Befehl aus, um die Konfigurationsdetails für Ihren mutierenden Webhook abzurufen.
kubectl get mutatingwebhookconfigurationsBeispielausgabe
NAME WEBHOOKS AGE istio-sidecar-injector 5 32m -
Suchen Sie in der Ausgabe nach
istio-sidecar-injectorund überprüfen Sie die Spalte WEBHOOKS. Wenn 5 oder mehr Webhooks vorhanden sind, führen Sie den folgenden Befehl aus, um die zusätzlichen Webhooks zu löschen.kubectl delete mutatingwebhookconfigurations istio-sidecar-injector && kubectl rollout restart deploy addon-istio-operator -n ibm-operatorsBeispielausgabe
mutatingwebhookconfiguration.admissionregistration.k8s.io "istio-sidecar-injector" deleted -
Überprüfen Sie, dass die zusätzlichen Webhooks gelöscht wurden. Rufen Sie die Konfigurationsdetails für Ihre mutierenden Webhooks ab und überprüfen Sie, dass 4
istio-sidecar-injector-Webhooks vorhanden sind.kubectl get mutatingwebhookconfigurationsBeispielausgabe
NAME WEBHOOKS AGE istio-sidecar-injector 4 60s -
Führen Sie den Befehl aus, um die Konfigurationsdetails Ihrer Webhook-Überprüfung abzurufen.
kubectl get validatingwebhookconfigurationsBeispielausgabe
NAME WEBHOOKS AGE istio-validator-istio-system 2 66s istiod-istio-system 1 31m -
Überprüfen Sie die Ausgabe. Wenn der Webhook
istiod-istio-systemaufgelistet wird, löschen Sie ihn durch Ausführen des folgenden Befehls.kubectl delete ValidatingWebhookConfiguration istiod-istio-systemBeispielausgabe
validatingwebhookconfiguration.admissionregistration.k8s.io "istiod-istio-system" deleted -
Überprüfen Sie, dass der Webhook
istiod-istio-systemnicht mehr aufgelistet wird.kubectl get validatingwebhookconfigurationsBeispielausgabe
NAME WEBHOOKS AGE istio-validator-istio-system 2 2m
-
-
Aktualisieren Sie das Istio-Add-on.
ibmcloud ks cluster addon update istio --version <version> -c <cluster_name_or_ID> -
Stellen Sie sicher, dass die Aktualisierung vollständig ausgeführt wurde und abschlossen ist, bevor Sie fortfahren.
Der Aktualisierungsprozess kann bis zu 20 Minuten in Anspruch nehmen.
-
Stellen Sie sicher, dass das Istio-Add-on den Zustand (Health State)
normalaufweist und sich im Status (Health Status) der Bereitschaft (Addon Ready) befindet. Wenn als Status der Wertupdatingangegeben wird, bedeutet dies, dass der Aktualisierungsvorgang noch nicht abgeschlossen ist.ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> -
Stellen Sie sicher, dass für die Komponentenpods der Steuerebene im Namensbereich
istio-systemder STATUS mit dem WertRunningals aktiv angegeben wird.kubectl get pods -n istio-systemNAME READY STATUS RESTARTS AGE istio-system istio-egressgateway-6d4667f999-gjh94 1/1 Running 0 61m istio-system istio-egressgateway-6d4667f999-txh56 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-b9xgp 1/1 Running 0 61m istio-system istio-ingressgateway-7bbf8d885-xhkv6 1/1 Running 0 61m istio-system istiod-5b9b5bfbb7-jvcjz 1/1 Running 0 60m istio-system istiod-5b9b5bfbb7-khcht 1/1 Running 0 60m
-
Aktualisierung des istioctl-Clients und der Sidecars
Aktualisieren Sie bei jeder Aktualisierung des über Istio verwalteten Add-ons Ihren Client istioctl sowie die Istio-Sidecars Ihrer App.
Die Patchversion Ihres Add-ons könnte zum Beispiel automatisch von IBM Cloud Kubernetes Service aktualisiert werden oder Sie könnten die Nebenversion des Istio-Add-ons aktualisieren. In jeden Fall müssen Sie Ihren
istioctl-Client und die bereits vorhandenen Istio-Sidecars Ihrer App so aktualisieren, dass sie mit der Istio-Version des Add-ons übereinstimmen.
-
Rufen Sie die Version Ihres
istioctl-Clients sowie der Komponenten der Steuerebene des Istio-Add-ons ab.istioctl version --short=falseBeispielausgabe
client version: version.BuildInfo{Version:"1.11.2"} pilot version: version.BuildInfo{Version:1.23.5} pilot version: version.BuildInfo{Version:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-vp97p.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-egressgateway-77bf75c5c-qkhgm.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-dffhq.istio-system", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"httpbin-74fb669cc6-svc8x.default", IstioVersion:1.23.5} data plane version: version.ProxyInfo{ID:"istio-ingressgateway-6dcb67b64d-cs9r9.istio-system", IstioVersion:1.23.5} ... -
Vergleichen Sie in der Ausgabe die Angabe für
client version(istioctl) mit der Versionsangabe für die Komponenten der Istio-Steuerebene, wie zum Beispielpilot version. Gehen Sie wie folgt vor, wenn die Versionen der Komponenten auf der Steuerebene und vonclient versionnicht übereinstimmen:-
Laden Sie den
istioctl-Client derselben Version herunter, die auch die Komponenten der Steuerebene aufweisen.curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.23.5 sh - -
Navigieren Sie zum Istio-Paketverzeichnis.
cd istio-1.23.5 -
Linux- und Mac OS-Benutzer: Fügen Sie den Client
istioctlzu Ihrer SystemvariablenPATHhinzu.export PATH=$PWD/bin:$PATH
-
-
Vergleichen Sie in der Ausgabe von Schritt 1 für jeden Pod der Datenebene die Angabe für die Pilotversion (
pilot version) mit der Versionsangabe für die Datenebene (data plane version).- Wenn die Angaben für die Pilotversion (
pilot version) und die Version der Datenebene (data plane version) übereinstimmen, sind keine weiteren Aktualisierungen erforderlich. - Wenn
pilot versionunddata plane versionnicht übereinstimmen, starten Sie Ihre Bereitstellungen für die Pods der Datenebene erneut, in denen die alte Version ausgeführt wird. Der Name und der Namensbereich des Pods werden in jedem Eintrag alsdata plane version: version.ProxyInfo{ID:"<pod_name>.<namespace>", IstioVersion:"1.8.4"}aufgelistet.
kubectl rollout restart deployment <deployment> -n <namespace> - Wenn die Angaben für die Pilotversion (
Aktualisierung von einer nicht unterstützten Version des Istio-Add-ons
Aktualisieren Sie Ihre Istio-Komponenten auf die neueste Patch-Version, die von IBM Cloud Kubernetes Service unterstützt wird.
Umstellung vom Istio-Add-on auf Community-Istio
Sie können auf das Community-Istio migrieren, anstatt das verwaltete Istio-Add-on zu verwenden.
Vorbereitende Schritte
- Wenn Sie eine frühere Version als 1.21 verwenden, aktualisieren Sie das Istio-Add-on auf Version 1.21 oder höher. Dieses Update ist wichtig, weil mit dieser Version die Deaktivierung des Add-ons nicht mehr die benutzerdefinierten Ressourcen entfernt, wie es bei früheren Versionen der Fall war.
- Wenn Sie Istio nicht mehr benötigen, können Sie das Add-on deinstallieren, ohne die Community Istio zu installieren, anstatt diese Schritte auszuführen.
Schritt 1: Deaktivieren des Istio-Add-ons über die Konsole
Deaktivieren Sie das Add-on über die Konsole oder CLI.
-
Klicken Sie in Ihrem Cluster-Dashboard auf den Namen des Clusters, aus dem Sie das Istio-Add-on entfernen möchten.
-
Navigieren Sie zum Abschnitt Add-ons.
-
Klicken Sie auf der Karte für verwaltete Istio-Add-ons auf das Symbol für das Aktionsmenü.
-
Klicken Sie auf Deinstallieren. Das verwaltete Istio-Add-on ist in diesem Cluster deaktiviert.
-
Vergewissern Sie sich auf der Karte für verwaltete Istio-Add-ons, dass das Add-on, das Sie deinstalliert haben, nicht mehr aufgelistet wird.
Schritt 1: Deaktivieren der Istio-Add-ons über die CLI
Deaktivieren Sie das Add-on und stellen Sie sicher, dass keine weiteren Istio-Add-ons vorhanden sind.
- Inaktivieren Sie das
istio-Add-on.ibmcloud ks cluster addon disable istio --cluster <cluster_name_or_ID> -f - Überprüfen Sie, ob alle verwalteten Istio-Add-ons in diesem Cluster inaktiviert wurden. In der Ausgabe werden keine Istio-Add-ons zurückgegeben.
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> - Warten Sie 10 Minuten, bevor Sie mit dem nächsten Schritt fortfahren. Das gibt uns Zeit, den istio-Operator zu entschärfen.
Schritt 2: Verkleinern des Istio-Operators
Verkleinern Sie den Istio-Operator-Einsatz.
Führen Sie den folgenden Befehl aus:
kubectl scale deployment -n ibm-operators addon-istio-operator --replicas=0
Schritt 3: Einsparung von Ressourcen
Speichern Sie alle Ressourcen, die Sie im Namespace istio-system erstellt oder geändert haben, sowie alle Kubernetes Ressourcen, die automatisch durch benutzerdefinierte Ressourcendefinitionen (CRDs) erzeugt wurden.
-
Speichern Sie die
managed-istio-customConfigMap, um ein Problem zu beheben oder das Add-on später erneut zu installieren.kubectl get cm -n ibm-operators managed-istio-custom -o yaml > Customizations.yaml -
Speichern Sie alle IstioOperator CRs (IOPs).
- Liste der IOP-Ressourcen:
kubectl get iop -A - Entfernen Sie für jede aufgelistete IOP-Ressource den Finalizer. Beispiel unter Verwendung des
managed-istioIOP:kubectl patch -n ibm-operators istiooperator/managed-istio --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]' - Speichern Sie jede der aufgeführten IOP-Ressourcen in einer Datei:
kubectl get iop -n <IOP_namespace> <IOP_name> -o yaml > <IOP_name>.yaml
- Liste der IOP-Ressourcen:
-
Warten Sie 10 Minuten, bevor Sie mit dem nächsten Schritt fortfahren.
Schritt 4: Ändern des Installationsprogramms für die IOPs
Löschen Sie alle Istio-Operator (IOP)-Ressourcen, z. B. für ein benutzerdefiniertes Ingress-Gateway.
-
Vergewissern Sie sich, dass Ihr
istioctlcli-Tool über die erforderliche Patch-Version verfügt.istioctl version -
Führen Sie für jede IOP-Datei, die Sie im vorherigen Schritt gespeichert haben, den Befehl
upgradeaus.istioctl upgrade -f <filename>.yaml
Schritt 5: Entfernen des Istio-Operators und der IOPs
Löschen Sie den Istio-Operator-Einsatz, das Dienstkonto, die Clusterrollenbindung, die Clusterrolle und alle IOPs.
-
Führen Sie die folgenden Befehle aus, um den Einsatz von istio operator zu löschen:
kubectl delete deployment -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete serviceaccount -n ibm-operators addon-istio-operator --ignore-not-found=true kubectl delete clusterrolebinding addon-istio-operator --ignore-not-found=true kubectl delete clusterrole addon-istio-operator --ignore-not-found=true -
Löschen Sie die IOPs.
- Liste der IOP-Ressourcen:
kubectl get iop -A - Löschen Sie jede aufgelistete IOP-Ressource:
kubectl delete IstioOperator <resource_name> -n <namespace>
- Liste der IOP-Ressourcen:
Schritt 6: Entfernen der ConfigMap
Da die Website ConfigMap zuvor gespeichert wurde, kann sie entfernt werden.
Entfernen Sie die managed-istio-custom ConfigMap.
kubectl delete cm -n ibm-operators managed-istio-custom
Die Entfernung des Add-ons ist abgeschlossen und Sie können die Community Istio weiterhin nutzen und bei Bedarf aktualisieren.