Azure Kubernetes Service- (AKS-) fürt frissítése

Az AKS-fürt életciklusának része a legújabb Kubernetes-verzió rendszeres frissítése. Fontos, hogy a legújabb biztonsági kiadásokat és frissítéseket alkalmazza a legújabb funkciók beszerzéséhez. Ez a cikk bemutatja, hogyan ellenőrizheti és alkalmazhatja a frissítéseket az AKS-fürtre.

Kubernetes-verziófrissítések

A támogatott AKS-fürtök frissítésekor nem hagyhatja ki a Kubernetes alverzióit. Az összes frissítést egymás után kell végrehajtania főverziószám szerint. Például 1.14.x ->1.15.x vagy 1.15.x ->1.16.x közötti frissítés engedélyezett. Az 1.14.x ->1.16.x nem engedélyezett. Csak akkor hagyhat ki több verziót, ha nem támogatott verzióról frissít egy támogatott verzióra. Például frissíthet nem támogatott 1.10.x-rőltámogatott 1.12.x-re , ha elérhető.

Ha olyan nem támogatott verzióról végez frissítést, amely kihagy két vagy több alverziót, a frissítés nem garantálja a funkcionalitást, és ki van zárva a szolgáltatásiszint-szerződésekből és a korlátozott jótállásból. Ha a verzió jelentősen elavult, javasoljuk, hogy hozza létre újra a fürtöt.

Mielőtt elkezdené

  • Ha az Azure CLI-t használja, ehhez a cikkhez az Azure CLI 2.34.1-es vagy újabb verziója szükséges. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
  • Az Azure PowerShell használata esetén ehhez a cikkhez az Azure PowerShell 5.9.0-s vagy újabb verziója szükséges. A verzió azonosításához futtassa a következőt: Get-InstalledModule -Name Az. Ha telepíteni vagy frissíteni szeretne, olvassa el az Azure PowerShell telepítését ismertető cikket.
  • A frissítési műveletek végrehajtásához RBAC-szerepkör Microsoft.ContainerService/managedClusters/agentPools/write szükséges. Az Azure RBAC-szerepkörökről további információt az Azure erőforrás-szolgáltatói műveleteiben talál.
  • Az 1.30 kubernetes-verziótól és az 1.27 LTS-verziótól kezdve a béta API-k alapértelmezés szerint le lesznek tiltva a frissítéskor.

Figyelmeztetés

Az AKS-fürtfrissítés aktiválja a csomópontok elszigetelését és kiürítését. Ha alacsony számítási kvótával rendelkezik, a frissítés sikertelen lehet. További információ a kvóták növeléséről szóló részben olvasható.

Az elérhető AKS-fürtfrissítések ellenőrzése

Feljegyzés

Ha naprakész szeretne lenni az AKS javításaival, kiadásaival és frissítéseivel kapcsolatban, tekintse meg az AKS kiadáskövetését.

  • A parancs használatával ellenőrizze, hogy mely Kubernetes-kiadások érhetők el a az aks get-upgrades fürthöz.

    az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
    

    Az alábbi példakimenet az aktuális verziót 1.26.6-os verzióként jeleníti meg, és felsorolja az elérhető verziókat a következő alattupgrades:

    {
      "agentPoolProfiles": null,
      "controlPlaneProfile": {
        "kubernetesVersion": "1.26.6",
        ...
        "upgrades": [
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.1"
          },
          {
            "isPreview": null,
            "kubernetesVersion": "1.27.3"
          }
        ]
      },
      ...
    }
    

Az AKS-fürt frissítési hibaüzeneteinek hibaelhárítása

Az alábbi példakimenet azt jelenti, hogy a appservice-kube bővítmény nem kompatibilis az Azure CLI-verzióval (legalább 2.34.1-es verzió szükséges):

The 'appservice-kube' extension is not compatible with this version of the CLI.
You have CLI core version 2.0.81 and this extension requires a min of 2.34.1.
Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.

Ha ezt a kimenetet kapja, frissítenie kell az Azure CLI-verziót. A az upgrade parancs a 2.11.0-s verzióban lett hozzáadva, és nem működik a 2.11.0 előtti verziókkal. A régebbi verziók frissítéséhez telepítse újra az Azure CLI-t az Azure CLI telepítésében leírtak szerint. Ha az Azure CLI 2.11.0-s vagy újabb verziója van, futtassa az upgrade az Azure CLI legújabb verziójára való frissítéséhez.

Ha az Azure CLI frissül, és a következő példakimenet jelenik meg, az azt jelenti, hogy nem érhetők el frissítések:

ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.

Ha nem érhetők el frissítések, hozzon létre egy új fürtöt a Kubernetes támogatott verziójával, és migrálja a számítási feladatokat a meglévő fürtről az új fürtre. Az AKS nem támogatja a fürtök újabb Kubernetes-verzióra való frissítését, ha az aks get-upgrades azt mutatja, hogy nem érhetők el frissítések.

AKS-fürt frissítése

A fürtfrissítési folyamat során az AKS a következő műveleteket hajtja végre:

  • Adjon hozzá egy új puffercsomópontot (vagy a maximális túlfeszültségben konfigurált csomópontot) a megadott Kubernetes-verziót futtató fürthöz.
  • A régi csomópontok kordonozása és ürítése a futó alkalmazások megszakadásának minimalizálása érdekében. Ha a maximális túlfeszültséget használja, az a megadott puffercsomópontok számával egyidejűleg annyi csomópontot kordonol és ürít .
  • A hosszú ideig futó podok esetében konfigurálhatja a csomópontlefolyó időtúllépését, amely lehetővé teszi a podok kiürítésének egyéni várakozási idejét és a csomópontonkénti kecses leállítást. Ha nincs megadva, az alapértelmezett érték 30 perc.
  • A régi csomópont teljes kiürítése után a rendszer újra megújul, hogy megkapja az új verziót, és a következő csomópont puffercsomópontja legyen a frissíteni kívánt csomóponthoz.
  • Igény szerint beállíthatja, hogy mennyi ideig várjon a csomópont ürítése és a csomópont újraimálása és a következő csomópontra való áttérés között. A rövid időköz lehetővé teszi egyéb feladatok elvégzését, például az alkalmazás állapotának ellenőrzését egy Grafana-irányítópulton a frissítési folyamat során. Javasoljuk, hogy a frissítési folyamathoz rövid időkeretet biztosítsunk, a lehető legközelebb 0 percig. Ellenkező esetben a csomópontok nagyobb áztatási ideje befolyásolja, hogy mennyi ideig tart a probléma felfedezése. A minimális áztatási időérték 0 perc, legfeljebb 30 perc. Ha nincs megadva, az alapértelmezett érték 0 perc.
  • Ez a folyamat addig ismétlődik, amíg a fürt összes csomópontja frissül.
  • A folyamat végén a rendszer törli az utolsó puffercsomópontot, fenntartva a meglévő ügynökcsomópontok számát és zónaegyenlegét.

Feljegyzés

Ha nincs megadva javítás, a fürt automatikusan frissít a megadott alverzió legújabb GA-javítására. Ha például a fürt frissítését a következőre 1.211.21.9állítja --kubernetes-version be: .

További információ: Kubernetes alverziófrissítések az AKS-ben.

  1. Frissítse a fürtöt a az aks upgrade parancs használatával.

    az aks upgrade \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --kubernetes-version <KUBERNETES_VERSION>
    
  2. Ellenőrizze, hogy a frissítés sikeres volt-e a az aks show parancs használatával.

    az aks show --resource-group myResourceGroup --name myAKSCluster --output table
    

    Az alábbi példakimenet azt mutatja, hogy a fürt most már az 1.27.3-at futtatja:

    Name          Location    ResourceGroup    KubernetesVersion    ProvisioningState    Fqdn
    ------------  ----------  ---------------  -------------------  -------------------  ----------------------------------------------
    myAKSCluster  eastus      myResourceGroup  1.27.3               Succeeded            myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io
    

Automatikus frissítési csatorna beállítása

Beállíthat egy automatikus frissítési csatornát a fürtön. További információ: AKS-fürt automatikus frissítése.

Csomópontok túlfeszültség-frissítésének testreszabása

Fontos

  • A csomópontok túlfeszültségeihez előfizetési kvótára van szükség az egyes frissítési műveletekhez kért maximális túlfeszültség-számhoz. Egy öt csomópontkészlettel rendelkező fürt például összesen 20 csomóponttal rendelkezik, amelyek mindegyike négy csomópontból áll. Ha minden csomópontkészlet 50%-os maximális túlfeszültség-értékkel rendelkezik, a frissítés elvégzéséhez további 10 csomópontból (2 csomópont * 5 készlet) álló számítási és IP-kvóta szükséges.

  • A csomópontkészlet maximális túlfeszültség-beállítása állandó. A Kubernetes későbbi frissítései vagy csomópontverzió-frissítései ezt a beállítást fogják használni. A csomópontkészletek maximális túlfeszültség-értékét bármikor módosíthatja. Éles csomópontkészletek esetén 33%-os maximális túlfeszültség-beállítást javasoljuk.

  • Ha Azure CNI-t használ, ellenőrizze, hogy vannak-e elérhető IP-címek az alhálózatban az Azure CNI IP-követelményeinek teljesítéséhez.

Az AKS alapértelmezés szerint úgy konfigurálja a frissítéseket, hogy egy további csomóponttal túlnőjenek. A maximális túlfeszültség-beállítások alapértelmezett értéke lehetővé teszi az AKS számára a számítási feladatok megszakításának minimalizálását azáltal, hogy egy további csomópontot hoz létre a meglévő alkalmazások kordonja vagy ürítése előtt egy régebbi verziójú csomópont lecseréléséhez. A csomópontkészletenkénti maximális túlfeszültség-érték testre szabható. A maximális túlfeszültség-érték növelésekor a frissítési folyamat gyorsabban befejeződik, és fennakadások léphetnek fel a frissítési folyamat során.

A 100%-os maximális túlfeszültség például a lehető leggyorsabb frissítési folyamatot biztosítja, de a csomópontkészlet összes csomópontját egyszerre üríti ki. Érdemes lehet egy magasabb értéket használni, például ezt a tesztelési környezetekhez. Az éles csomópontkészletek esetében 33%-os beállítást javasoljukmax_surge.

Az AKS az egész számértéket és a maximális túlfeszültség százalékos értékét is elfogadja. Az 5-höz hasonló egész szám öt többletcsomópontot jelez. Az 50%-os érték a készlet aktuális csomópontszámának felét jelenti. A maximális túlfeszültség százalékos értéke lehet legalább 1% és legfeljebb 100%. A százalékérték a legközelebbi csomópontszámra lesz kerekítve. Ha a maximális túlfeszültség-érték nagyobb, mint a frissíteni kívánt csomópontok száma, a frissítésre váró csomópontok száma a maximális túlfeszültség-értékhez lesz felhasználva. A frissítés során a maximális túlfeszültség értéke lehet legalább 1 , a csomópontkészletben lévő csomópontok számával megegyező maximális érték. Nagyobb értékeket állíthat be, de a maximális túlfeszültséghez használt csomópontok száma nem lehet magasabb, mint a készletben lévő csomópontok száma a frissítéskor.

Maximális túlfeszültség értékének beállítása

  • Új vagy meglévő csomópontkészletek maximális túlfeszültség-értékeinek beállítása a parancs vagy az aks nodepool update a az aks nodepool add parancs használatával.

    # Set max surge for a new node pool
    az aks nodepool add -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33%
    
    # Update max surge for an existing node pool 
    az aks nodepool update -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 5
    

Csomópontlefolyó időtúllépési értékének beállítása

Időnként előfordulhat, hogy egy adott podon hosszú ideig futó számítási feladat van, és futásidőben nem ütemezhető át egy másik csomópontra, például egy memóriaigényes állapotalapú számítási feladatra, amelyet végre kell hajtania. Ezekben az esetekben konfigurálhat egy csomópontlefolyó időtúllépést, amelyet az AKS figyelembe fog venni a frissítési munkafolyamatban. Ha nincs megadva csomópontlefolyó időtúllépési értéke, az alapértelmezett érték 30 perc. Ha a lefolyó időtúllépési értéke eltelik, és a podok továbbra is futnak, a frissítési művelet leáll. Minden későbbi PUT műveletnek folytatnia kell a leállított frissítést.

  • Állítsa be a csomópontlefolyó időtúllépését az új vagy meglévő csomópontkészletekhez a vagy az aks nodepool update parancs az aks nodepool add használatával.

    # Set drain timeout for a new node pool
    az aks nodepool add -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster  --drain-timeout 100
    
    # Update drain timeout for an existing node pool
    az aks nodepool update -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --drain-timeout 45
    

Csomópont áztatási időértékének beállítása

Ha azt szeretné, hogy a csomópont ürítése és az újraimálás és a következő csomópontra való áttérés közötti várakozási idő hosszabb ideig tartson, 0 és 30 perc közötti értékre állíthatja be az áztatási időt. Ha nincs megadva csomóponti áztatási időérték, az alapértelmezett érték 0 perc.

  • Új vagy meglévő csomópontkészletek csomóponti áztatási idejének beállítása az , az aks nodepool updatevagy az aks nodepool upgrade parancs az aks nodepool addhasználatával.

    # Set node soak time for a new node pool
    az aks nodepool add -n MyNodePool -g MyResourceGroup --cluster-name MyManagedCluster --node-soak-duration 10
    
    # Update node soak time for an existing node pool
    az aks nodepool update -n MyNodePool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 5
    
    # Set node soak time when upgrading an existing node pool
    az aks nodepool upgrade -n MyNodePool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 20
    

Frissítési események megtekintése

  • A parancs használatával megtekintheti a frissítési kubectl get events eseményeket.

    kubectl get events 
    

    Az alábbi példakimenet a frissítés során felsorolt néhány fenti eseményt mutatja be:

    ...
    default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001]
    ...
    default 1m45s Normal Upgrade node/aks-nodepool1-96663640-vmss000001   Soak duration 5m0s after draining node: aks-nodepool1-96663640-vmss000001
    ...
    default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool nodepool1
    ...
    

Következő lépések

Az automatikus frissítések konfigurálásáról az AKS-fürtök automatikus frissítéseinek konfigurálása című témakörben olvashat.

A frissítési ajánlott eljárások és egyéb szempontok részletes ismertetését az AKS-javítás és a frissítési útmutató ismerteti.