Megosztás a következőn keresztül:


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.

  1. 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.

  2. 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.

  3. Canary upgrade from revision asm-1-22 to asm-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.

  4. 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:

    1. Istioctl parancssori felület telepítése

    2. 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
      
    3. 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
      
    4. 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.

  5. Ellenőrizze a vezérlősík podjait, amelyek mind a kettőnek asm-1-22 megfelelnek, és asm-1-23 léteznek:

    1. 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
      
    2. 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ó.

  6. 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:

    1. 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.

    2. 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.

  7. 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>
    
  8. 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:

    1. 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
      
    2. 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 
    
  9. 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