Rendelkezésre állási zónákat használó Azure Kubernetes Service-fürt létrehozása

Az Azure Kubernetes Service-fürt (AKS) olyan erőforrásokat oszt el, mint a csomópontok és a tárolók a mögöttes Azure-infrastruktúra logikai szakaszai között. A rendelkezésre állási zónák használata fizikailag elválasztja a csomópontokat a különböző rendelkezésre állási zónákban üzembe helyezett többi csomóponttól. A fürtökre konfigurált több rendelkezésre állási zónával üzembe helyezett AKS-fürtök magasabb szintű rendelkezésre állást biztosítanak a hardverhibák vagy a tervezett karbantartási események elleni védelem érdekében.

Egy fürt csomópontkészleteinek több zónára való definiálásával egy adott csomópontkészlet csomópontjai akkor is képesek továbbra is üzemelni, ha egyetlen zóna leesett. Az alkalmazások akkor is elérhetők maradnak, ha egyetlen adatközpontban fizikai hiba történik, ha a csomópontok egy részhalmazának meghibásodását szeretné tolerálni.

Ez a cikk bemutatja, hogyan hozhat létre AKS-fürtöt, és hogyan oszthatja el a csomópont-összetevőket a rendelkezésre állási zónák között.

Előkészületek

Telepítenie és konfigurálnia kell az Azure CLI 2.0.76-os vagy újabb verzióját. 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.

Korlátozások és régiók rendelkezésre állása

Az AKS-fürtök bármely olyan Azure-régióban használhatnak rendelkezésre állási zónákat, amelyek rendelkezésre állási zónákkal rendelkeznek.

A rendelkezésre állási zónák használatával létrehozott AKS-fürtökre az alábbi korlátozások vonatkoznak:

  • A rendelkezésre állási zónákat csak a fürt vagy a csomópontkészlet létrehozásakor határozhatja meg.
  • A meglévő nem rendelkezésre állási zónafürtök nem frissíthetőek a rendelkezésre állási zónák használatára a fürt létrehozása után.
  • A kiválasztott csomópontméretnek (VM SKU) elérhetőnek kell lennie az összes kijelölt rendelkezésre állási zónában.
  • Az engedélyezett rendelkezésre állási zónákkal rendelkező fürtöknek Azure Standard Load Balancereket kell használniuk a zónák közötti elosztáshoz. Ezt a terheléselosztó-típust csak a fürt létrehozásakor definiálhatja. További információkért és a standard terheléselosztó korlátaiért tekintse meg az Azure Load Balancer standard termékváltozatának korlátozásait.

Az Azure Disk rendelkezésre állási zónájának támogatása

  • Az Azure által felügyelt LRS-lemezeket használó kötetek nem zónaredundáns erőforrások, a zónák közötti csatolás nem támogatott. A köteteket ugyanabban a zónában kell elhelyeznie, amelyben a cél podot üzemeltető megadott csomópont található.
  • Az Azure által felügyelt ZRS-lemezeket használó kötetek zónaredundáns erőforrások. Ezeket a köteteket az összes zóna- és nem zónaügynök-csomóponton ütemezheti, az alábbi példában bemutatjuk, hogyan hozhat létre tárosztályt a StandardSSD_ZRS lemez használatával:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-csi-zrs
provisioner: disk.csi.azure.com
parameters:
  skuName: StandardSSD_ZRS  # or Premium_ZRS
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

A Kubernetes az 1.12-es verzió óta ismeri az Azure rendelkezésre állási zónáit. Az Azure Managed Diskre hivatkozó PersistentVolumeClaim objektumot többzónás AKS-fürtön helyezheti üzembe, és a Kubernetes gondoskodik a PVC-t a megfelelő rendelkezésre állási zónában igénylést igénylő podok ütemezéséről .

Azure Resource Manager-sablonok és rendelkezésre állási zónák

AKS-fürt létrehozásakor ismerje meg a rendelkezésre állási zónák sablonban való megadásának alábbi részleteit:

  • Ha például egy sablonban explicit módon definiál null értéket, "availabilityZones": nulla Resource Manager-sablon úgy kezeli a tulajdonságot, mintha nem létezne. Ez azt jelenti, hogy a fürt nem egy rendelkezésre állási zónában van üzembe helyezve.
  • Ha nem veszi fel a tulajdonságot a "availabilityZones": Resource Manager-sablonba, a fürt nem telepít rendelkezésre állási zónában.
  • Meglévő fürtön nem frissítheti a rendelkezésre állási zónák beállításait, a viselkedés más, ha Resource Manager-sablonokkal frissít egy AKS-fürtöt. Ha a sablonban kifejezetten null értéket állít be a rendelkezésre állási zónákhoz, és frissíti a fürtöt, az nem frissíti a fürtöt a rendelkezésre állási zónákhoz. Ha azonban kihagyja a rendelkezésre állási zónák tulajdonságot olyan szintaxissal, mint például "availabilityZones": [], az üzembe helyezés megpróbálja letiltani a rendelkezésre állási zónákat a meglévő AKS-fürtön, és sikertelen lesz.

Az AKS-fürtök rendelkezésre állási zónáinak áttekintése

A rendelkezésre állási zónák olyan magas rendelkezésre állású ajánlatok, amelyek megvédik az alkalmazásokat és az adatokat az adatközpontok meghibásodásaitól. A zónák egyedi fizikai helyek egy Azure-régión belül. Minden zóna egy vagy több, független energiaellátással, hűtéssel és hálózatkezeléssel felszerelt adatközpontot tartalmaz. A rugalmasság biztosítása érdekében minden zóna által engedélyezett régióban mindig több zóna van. A rendelkezésreállási zónák régión belüli fizikai elkülönítése védelmet biztosít az alkalmazások és az adatok számára az adatközpont meghibásodása esetén.

További információ: Mik azok a rendelkezésre állási zónák az Azure-ban?.

A rendelkezésre állási zónákkal üzembe helyezett AKS-fürtök egyetlen régión belül több zónában is eloszthatják a csomópontokat. Az USA 2. keleti régiójában található fürtök például az USA 2. keleti régiójában mindhárom rendelkezésre állási zónában létrehozhatnak csomópontokat. Az AKS-fürterőforrások elosztása javítja a fürtök rendelkezésre állását, mivel rugalmasak egy adott zóna meghibásodásával szemben.

AKS node distribution across availability zones

Ha egy zóna elérhetetlenné válik, az alkalmazások továbbra is futnak a több zónában való elterjesztésre konfigurált fürtökön.

Megjegyzés:

Ha a rendelkezésre állási zónákat a fürt automatikus skálázójával implementálja, javasoljuk, hogy minden zónához használjon egyetlen csomópontkészletet. A paramétert beállíthatja --balance-similar-node-groups úgy, hogy True a csomópontok kiegyensúlyozott eloszlását fenntartsa zónák között a számítási feladatokhoz a vertikális felskálázási műveletek során. Ha ez a megközelítés nincs implementálva, a vertikális leskálázási műveletek megzavarhatják a csomópontok zónák közötti egyensúlyát.

AKS-fürt létrehozása rendelkezésre állási zónák között

Amikor az az aks create paranccsal hoz létre fürtöt, a --zones paraméter megadja az ügynökcsomópontok üzembe helyezéséhez szükséges rendelkezésre állási zónákat. A felügyelt vezérlősík-összetevők által üzembe helyezett rendelkezésre állási zónákat ez a paraméter nem szabályozza. A fürt üzembe helyezése során a rendszer automatikusan elosztja őket a régió összes rendelkezésre állási zónájában (ha van ilyen).

Az alábbi példa létrehoz egy myAKSCluster nevű AKS-fürtöt a myResourceGroup nevű erőforráscsoportban, összesen három csomóponttal. Egy ügynökcsomópont az 1. zónában, egy a 2., majd egy a 3. zónában.

az group create --name myResourceGroup --location eastus2

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --generate-ssh-keys \
    --vm-set-type VirtualMachineScaleSets \
    --load-balancer-sku standard \
    --node-count 3 \
    --zones 1 2 3

Az AKS-fürt létrehozása eltarthat néhány percig.

Amikor eldönti, hogy egy új csomópont melyik zónához tartozik, egy adott AKS-csomópontkészlet az alapul szolgáló Azure-beli virtuálisgép-méretezési csoportok által kínált legjobb munkamennyiség-zónaelosztást használja. Az AKS-csomópontkészlet akkor "kiegyensúlyozott", ha minden zónában azonos számú virtuális gép vagy +- egy virtuális gép található a méretezési csoport összes többi zónájában.

Csomópontok zónák közötti elosztásának ellenőrzése

Ha a fürt készen áll, adja meg, hogy milyen rendelkezésre állási zónában vannak az ügynökcsomópontok a méretezési csoportban.

Először szerezze be az AKS-fürt hitelesítő adatait az az aks get-credentials paranccsal:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Ezután a kubectl describe paranccsal listázhatja a fürt csomópontjait, és szűrhet az topology.kubernetes.io/zone értékre. Az alábbi példa egy Bash-rendszerhéjra mutat.

kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"

Az alábbi példakimenet a megadott régióban és rendelkezésre állási zónákban elosztott három csomópontot mutatja be, például az első rendelkezésre állási zóna eastus2-1-ét , a második rendelkezésre állási zónához pedig eastus2-2-t :

Name:       aks-nodepool1-28993262-vmss000000
            topology.kubernetes.io/zone=eastus2-1
Name:       aks-nodepool1-28993262-vmss000001
            topology.kubernetes.io/zone=eastus2-2
Name:       aks-nodepool1-28993262-vmss000002
            topology.kubernetes.io/zone=eastus2-3

Amikor további csomópontokat ad hozzá egy ügynökkészlethez, az Azure platform automatikusan elosztja a mögöttes virtuális gépeket a megadott rendelkezésre állási zónák között.

A Kubernetes 1.17.0-s és újabb verzióival az AKS az újabb címkét topology.kubernetes.io/zone és az elavultat failure-domain.beta.kubernetes.io/zonehasználja. Ugyanezt az eredményt kubelet describe nodes az előző lépésben a következő szkript futtatásával érheti el:

kubectl get nodes -o custom-columns=NAME:'{.metadata.name}',REGION:'{.metadata.labels.topology\.kubernetes\.io/region}',ZONE:'{metadata.labels.topology\.kubernetes\.io/zone}'

Az alábbi példa részletesebben is hasonlít a kimenetre:

NAME                                REGION   ZONE
aks-nodepool1-34917322-vmss000000   eastus   eastus-1
aks-nodepool1-34917322-vmss000001   eastus   eastus-2
aks-nodepool1-34917322-vmss000002   eastus   eastus-3

Podok zónák közötti eloszlásának ellenőrzése

A jól ismert címkékben, széljegyzetekben és taintekben dokumentált Kubernetes a topology.kubernetes.io/zone címkével automatikusan elosztja a podokat egy replikációs vezérlőben vagy szolgáltatásban a különböző elérhető zónák között. A címke teszteléséhez és a fürt 3 és 5 csomópont közötti skálázásához futtassa a következő parancsot a pod megfelelő eloszlásának ellenőrzéséhez:

az aks scale \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 5

Ha a méretezési művelet néhány perc múlva befejeződik, futtassa a parancsot kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone" egy Bash-rendszerhéjban. A következő kimenet hasonlít az eredményekre:

Name:       aks-nodepool1-28993262-vmss000000
            topology.kubernetes.io/zone=eastus2-1
Name:       aks-nodepool1-28993262-vmss000001
            topology.kubernetes.io/zone=eastus2-2
Name:       aks-nodepool1-28993262-vmss000002
            topology.kubernetes.io/zone=eastus2-3
Name:       aks-nodepool1-28993262-vmss000003
            topology.kubernetes.io/zone=eastus2-1
Name:       aks-nodepool1-28993262-vmss000004
            topology.kubernetes.io/zone=eastus2-2

Most már két további csomópontja van az 1. és a 2. zónában. Három replikából álló alkalmazást helyezhet üzembe. Az alábbi példa az NGINX-et használja:

kubectl create deployment nginx --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
kubectl scale deployment nginx --replicas=3

A podokat futtató csomópontok megtekintésével láthatja, hogy a podok három különböző rendelkezésre állási zónának megfelelő csomóponton futnak. Ha például a parancs kubectl describe pod | grep -e "^Name:" -e "^Node:" egy Bash-rendszerhéjban van, a következő példakimenet jelenik meg:

Name:         nginx-6db489d4b7-ktdwg
Node:         aks-nodepool1-28993262-vmss000000/10.240.0.4
Name:         nginx-6db489d4b7-v7zvj
Node:         aks-nodepool1-28993262-vmss000002/10.240.0.6
Name:         nginx-6db489d4b7-xz6wj
Node:         aks-nodepool1-28993262-vmss000004/10.240.0.8

Ahogy az előző kimenetből látható, az első pod a rendelkezésre állási zónában eastus2-1található 0. csomóponton fut. A második pod a 2. csomóponton fut, eastus2-3a 4. csomópontban pedig a harmadikon eastus2-2. További konfiguráció nélkül a Kubernetes mindhárom rendelkezésre állási zónában megfelelően szórja el a podokat.

További lépések

Ez a cikk azt ismertette, hogyan hozhat létre AKS-fürtöt rendelkezésre állási zónák használatával. A magas rendelkezésre állású fürtökkel kapcsolatos további szempontokért tekintse meg az AKS üzletmenet-folytonossági és vészhelyreállítási ajánlott eljárásait.