Istio-alapú service mesh bővítmény frissítése az Azure Kubernetes Service-hez
Ez a cikk az Azure Kubernetes Service (AKS) Istio-alapú service mesh bővítményének frissítési élményeit ismerteti.
Az Istio-alapú service mesh bővítmény új alverzióinak vagy javításainak kiadásáról szóló közlemények az AKS kibocsátási megjegyzéseiben jelennek meg. A Service Mesh bővítmény változatainak kiadási ütemezésével és támogatásával kapcsolatos további információkért olvassa el a támogatási szabályzatot.
Kisebb verziófrissítés
Az Istio bővítmény lehetővé teszi az alverzió frissítését a kanári-frissítési folyamattal. A frissítés indításakor az új (kanári) változat vezérlősíkja a kezdeti (stabil) változat vezérlősíkjával együtt lesz üzembe helyezve. Ezután manuálisan is átgörgetheti az adatsík számítási feladatait, miközben monitorozási eszközökkel nyomon követheti a számítási feladatok állapotát a folyamat során. Ha nem tapasztal problémákat a számítási feladatok állapotával kapcsolatban, elvégezheti a frissítést, hogy csak az új változat maradjon a fürtön. Máskülönben visszatérhet az Istio előző változatához.
Ha a fürt jelenleg az Istio támogatott alverzióját használja, a frissítések egyszerre csak egy kisebb változatot engedélyeznek. Ha a fürt az Istio nem támogatott verzióját használja, az Istio legalacsonyabb támogatott alverziójára kell frissítenie az adott Kubernetes-verzióhoz. Ezt követően a frissítéseket egyszerre egy kisebb változatban is elvégezheti.
Az alábbi példa bemutatja, hogyan frissíthet a verzióról asm-1-22
asm-1-23
a default
névtérben lévő összes számítási feladatra. A lépések minden kisebb frissítés esetében megegyeznek, és tetszőleges számú névtérhez használhatók.
Az az aks mesh get-upgrades paranccsal ellenőrizze, hogy mely változatok érhetők el a fürthöz frissítési célként:
az aks mesh get-upgrades --resource-group $RESOURCE_GROUP --name $CLUSTER
Ha azt várja, hogy a parancs nem ad vissza újabb változatot, előfordulhat, hogy előbb frissítenie kell az AKS-fürtöt, hogy az kompatibilis legyen a legújabb változattal.
Ha beállítja a hálókonfigurációt a fürt meglévő hálókonfigurációjához, a következő lépésben létre kell hoznia egy külön konfigurációtérképet, amely megfelel a
aks-istio-system
névtér új változatának. Ez a konfiguráció akkor alkalmazható, amikor az új változat vezérlősíkja üzembe lett helyezve a fürtön. További részleteket itt talál.Canary upgrade from revision
asm-1-22
toasm-1-23
using az aks mesh upgrade start:az aks mesh upgrade start --resource-group $RESOURCE_GROUP --name $CLUSTER --revision asm-1-23
A kanári-frissítés azt jelenti, hogy az 1.23 vezérlősík az 1.22 vezérlősík mellett van üzembe helyezve. Mindaddig együtt maradnak, amíg el nem készül, vagy vissza nem gördül a frissítés.
Szükség esetén a korrektúracímkék használatával az adatsíkot át lehet helyezni az új változatra anélkül, hogy manuálisan kellene újracímkélni az egyes névtereket. A névterek manuális újracímkézése az új változatba való áthelyezéskor fárasztó és hibalehetőséget jelenthet. A korrektúracímkék úgy oldják meg ezt a problémát, hogy stabil azonosítóként szolgálnak, amelyek a korrektúrákra mutatnak.
Az egyes névterek újracímkézése helyett a fürt operátorai úgy módosíthatják a címkét, hogy egy új változatra mutasson. Az ezzel a címkével ellátott névterek egyszerre frissülnek. Továbbra is újra kell indítania a számítási feladatokat, hogy meggyőződjön arról, hogy az oldalkocsik megfelelő verziója
istio-proxy
be van-e adva.Változatcímkék használata a frissítés során:
Hozzon létre egy korrektúracímkét a kezdeti változathoz. Ebben a példában a következő nevet adjuk neki
prod-stable
:istioctl tag set prod-stable --revision asm-1-22 --istioNamespace aks-istio-system
Hozzon létre egy változatcímkét a frissítés során telepített változathoz. Ebben a példában a következő nevet adjuk neki
prod-canary
:istioctl tag set prod-canary --revision asm-1-23 --istioNamespace aks-istio-system
Alkalmazásnévterek címkézése a korrektúracímkékhez való leképezéshez:
# label default namespace to map to asm-1-22 kubectl label ns default istio.io/rev=prod-stable --overwrite
Az újabb változathoz névtereket
istio.io/rev=prod-canary
is címkézhet. A névterek számítási feladatai azonban nem frissülnek új oldalkocsira, amíg újra nem indulnak.Ha a címkézés után egy új alkalmazás jön létre egy névtérben, a rendszer egy oldalkocsit injektál a névtér változatcímkéjének megfelelően.
Ellenőrizze a vezérlősík podjait, amelyek mind a kettőnek
asm-1-22
megfelelnek, ésasm-1-23
léteznek:Podok ellenőrzése
istiod
:kubectl get pods -n aks-istio-system
Példa a kimenetre:
NAME READY STATUS RESTARTS AGE istiod-asm-1-22-55fccf84c8-dbzlt 1/1 Running 0 58m istiod-asm-1-22-55fccf84c8-fg8zh 1/1 Running 0 58m istiod-asm-1-23-f85f46bf5-7rwg4 1/1 Running 0 51m istiod-asm-1-23-f85f46bf5-8p9qx 1/1 Running 0 51m
Ha engedélyezve van a bejövő forgalom, ellenőrizze a bejövő podokat:
kubectl get pods -n aks-istio-ingress
Példa a kimenetre:
NAME READY STATUS RESTARTS AGE aks-istio-ingressgateway-external-asm-1-22-58f889f99d-qkvq2 1/1 Running 0 59m aks-istio-ingressgateway-external-asm-1-22-58f889f99d-vhtd5 1/1 Running 0 58m aks-istio-ingressgateway-external-asm-1-23-7466f77bb9-ft9c8 1/1 Running 0 51m aks-istio-ingressgateway-external-asm-1-23-7466f77bb9-wcb6s 1/1 Running 0 51m aks-istio-ingressgateway-internal-asm-1-22-579c5d8d4b-4cc2l 1/1 Running 0 58m aks-istio-ingressgateway-internal-asm-1-22-579c5d8d4b-jjc7m 1/1 Running 0 59m aks-istio-ingressgateway-internal-asm-1-23-757d9b5545-g89s4 1/1 Running 0 51m aks-istio-ingressgateway-internal-asm-1-23-757d9b5545-krq9w 1/1 Running 0 51m
Figyelje meg, hogy mindkét változat bejövő átjáró podjai egymás mellett vannak üzembe helyezve. A szolgáltatás és IP-címe azonban nem módosítható.
Adja vissza a névteret úgy, hogy az új podok az új változathoz és vezérlősíkhoz társított Istio oldalkocsihoz legyenek rendelve:
Korrektúracímkék használata esetén írja felül magát a címkét a
prod-stable
leképezés módosításához:istioctl tag set prod-stable --revision asm-1-23 --istioNamespace aks-istio-system --overwrite
Ellenőrizze a címkék és a változatok megfeleltetését:
istioctl tag list
Mindkét címkének az újonnan telepített változatra kell mutatnia:
TAG REVISION NAMESPACES prod-canary asm-1-23 default prod-stable asm-1-23 ...
Ebben az esetben nem kell külön-külön címkéznie az egyes névtereket.
Ha nem használ korrektúracímkéket, az adatsík névtereit újra kell címkézni, hogy az új változatra mutasson:
kubectl label namespace default istio.io/rev=asm-1-23 --overwrite
Az újracímkézés nem érinti a számítási feladatokat, amíg újra nem indítják őket.
Az egyes alkalmazás-számítási feladatok egyenként, újraindítással gördüljenek át. Példa:
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Ellenőrizze a monitorozási eszközöket és irányítópultokat annak megállapításához, hogy a számítási feladatok kifogástalan állapotban futnak-e az újraindítás után. Az eredmény alapján két lehetősége van:
Végezze el a kanári frissítését: Ha elégedett azzal, hogy a számítási feladatok a vártnak megfelelően kifogástalan állapotban futnak, elvégezheti a kanári-frissítést. A frissítés befejezése eltávolítja az előző változat vezérlősíkját, és az új változat vezérlősíkja mögött marad a fürtön. Futtassa a következő parancsot a kanári-frissítés befejezéséhez:
az aks mesh upgrade complete --resource-group $RESOURCE_GROUP --name $CLUSTER
A kanári frissítés visszaállítása: Ha bármilyen problémát észlel a számítási feladatok állapotával kapcsolatban, visszatérhet az Istio korábbi változatához:
A névtér újracímkézése az előző változatra: Korrektúracímkék használata esetén:
istioctl tag set prod-stable --revision asm-1-22 --istioNamespace aks-istio-system --overwrite
Vagy ha nem használ korrektúracímkéket:
kubectl label namespace default istio.io/rev=asm-1-22 --overwrite
A számítási feladatok ismételt újraindításával visszaállíthatja a számítási feladatokat az előző Istio-változatnak megfelelő oldalkocsi használatára:
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
A vezérlősík visszaállítása az előző változatra:
az aks mesh upgrade rollback --resource-group $RESOURCE_GROUP --name $CLUSTER
A
prod-canary
változatcímke eltávolítható:istioctl tag remove prod-canary --istioNamespace aks-istio-system
Ha a mesh-konfiguráció korábban be lett állítva a változatokhoz, most már törölheti a fürtből a teljes/visszaállítás során eltávolított változat konfigurációtérképét.
Kisebb verziófrissítések a bejövő átjáróval
Ha jelenleg Istio bejövő átjárókat használ, és kisebb verziófrissítést hajt végre, vegye figyelembe, hogy az Istio bejövő átjáró podjai/üzembe helyezései változatonként vannak üzembe helyezve. Azonban egyetlen LoadBalancer-szolgáltatást biztosítunk az összes bejövő átjáró podon több változaton keresztül, így a bejövő átjárók külső/belső IP-címe változatlan marad a frissítés során.
Így a kanári-frissítés során, amikor egyszerre két változat is létezik a fürtön, mindkét változat bejövő átjáró podjai kiszolgálják a bejövő forgalmat.
Kisebb változatfrissítések a pod automatikus horizontális skálázási testreszabásával
Ha az Istiod vagy a bejövő átjárók esetében testre szabott vízszintes pod-automatikus skálázási (HPA) beállításokat használ, vegye figyelembe az alábbi viselkedést a HPA-beállítások mindkét változatban való alkalmazásához, hogy fenntartsa a konzisztenciát egy kanári-frissítés során:
- Ha a frissítés megkezdése előtt frissíti a HPA-specifikációt, a meglévő (stabil) változat beállításai az új vezérlősík telepítésekor a kanári változat HPA-jára lesznek alkalmazva.
- Ha frissíti a HPA specifikációt, miközben a kanári frissítése folyamatban van, a stabil változat HPA-specifikációja elsőbbséget élvez, és a kanári változat HPA-jára lesz alkalmazva.
- Ha a frissítés során frissíti a stabil változat HPA-ját, a canary változat HPA-specifikációja a stabil változatra alkalmazott új beállításoknak megfelelően frissül.
- Ha a frissítés során frissíti a kanári változat HPA-ját, a canary változat HPA-specifikációja visszaáll a stabil változat HPA-specifikációjára.
Javítás verziófrissítése
- Az Istio bővítmény javításverzióinak rendelkezésre állási információi megjelennek az AKS kibocsátási megjegyzéseiben.
- Ezek az AKS-kiadások részeként automatikusan megjelennek a javítások a kimenő és bejövő podok esetében, amelyek megfelelnek a
default
fürthöz beállított tervezett karbantartási időszaknak . - A felhasználónak javításokat kell kezdeményeznie az Istio-proxyn a számítási feladataikban a podok újraindításával az újbóli üzembe helyezéshez:
Ellenőrizze, hogy az Istio-proxy új vagy újraindított podokhoz készült-e. Ez a verzió megegyezik az istiod és az Istio bejövő podok verziójával a javítás után:
kubectl get cm -n aks-istio-system -o yaml | grep "mcr.microsoft.com\/oss\/istio\/proxyv2"
Példa a kimenetre:
"image": "mcr.microsoft.com/oss/istio/proxyv2:1.22.0-distroless", "image": "mcr.microsoft.com/oss/istio/proxyv2:1.22.0-distroless"
Ellenőrizze az Istio proxy lemezképének verzióját a névtérben lévő összes pod esetében:
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\ sort |\ grep "mcr.microsoft.com\/oss\/istio\/proxyv2"
Példa a kimenetre:
productpage-v1-979d4d9fc-p4764: docker.io/istio/examples-bookinfo-productpage-v1:1.22.0, mcr.microsoft.com/oss/istio/proxyv2:1.22.0-distroless
A feladat újraindításához indítsa újra a számítási feladatokat. Példa:
kubectl rollout restart deployments/productpage-v1 -n default
Ha ellenőrizni szeretné, hogy most már az újabb verziókban vannak-e, ellenőrizze ismét az Istio proxyrendszerképének verzióját a névtérben lévő összes pod esetében:
kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\ sort |\ grep "mcr.microsoft.com\/oss\/istio\/proxyv2"
Példa a kimenetre:
productpage-v1-979d4d9fc-p4764: docker.io/istio/examples-bookinfo-productpage-v1:1.2.0, mcr.microsoft.com/oss/istio/proxyv2:1.22.0-distroless
Feljegyzés
A frissítések során felmerülő problémák esetén tekintse meg a mesh-változatfrissítések hibaelhárításáról szóló cikket
Azure Kubernetes Service