Állandó kötetek (PV-k) létrehozása és kezelése Azure Disks lemezekkel az Azure Kubernetes Service (AKS) szolgáltatásban

Ez a cikk bemutatja, hogyan hozhat létre dinamikusan és statikusan állandó köteteket (PV-ket) Azure lemezek használatával, amelyeket egyetlen pod használ egy Azure Kubernetes Service (AKS)-fürtben.

Előfeltételek

  • Azure CLI 2.0.59-es vagy újabb verzió van telepítve és konfigurálva. Keresse meg a verziót a az --version parancs használatával. A telepítéssel vagy frissítéssel kapcsolatban lásd: Install Azure CLI.

  • A Azure Lemezek CSI-meghajtó be van kapcsolva az AKS-fürtön.

  • A Azure lemezek CSI-illesztőprogramjának csomópontonkénti kötetkorlátja van. A kötetszám a csomópont/munkacsoport mérete alapján változik. A kubectl get parancs segítségével meghatározhatja, hogy csomópontonként hány kötetet lehet hozzárendelni. Például:

    kubectl get CSINode <node-name> -o yaml
    

    Ha a csomópontonkénti kötetkorlát problémát jelent a számítási feladathoz, fontolja meg a Azure Tárolótároló használatát az állandó kötetekhez a CSI-illesztőprogramok helyett.

Beépített tárolóosztályok dinamikus PV-khez Azure Diszkekkel

A tárolási osztályok meghatározzák, hogyan jön létre dinamikusan egy tárolóegység egy állandó kötettel.

Minden AKS-fürt négy beépített tárolási osztályt tartalmaz, ezek közül kettő Azure lemezek használatára van konfigurálva:

  • A default tárolási osztály standard SSD-Azure lemezt helyez üzembe.
    • A standard SSD-k a Standard tárolót adják vissza, és költséghatékony tárolást biztosítanak, miközben továbbra is megbízható teljesítményt nyújtanak.
  • A managed-csi-premium tárolási osztály prémium szintű Azure Lemezt helyez üzembe.
    • Az SSD-alapú nagy teljesítményű, alacsony késésű lemezek prémium szintű lemezeket ad vissza. Ideálisak éles számítási feladatokat futtató virtuális gépekhez. Ha a Azure Disk CSI-illesztőprogramot használja az AKS-en, használhatja a managed-csi tárolási osztályt is, amelyet a Standard SSD helyileg redundáns tároló (LRS) biztosít.
  • A Kubernetes 1.29-es verziójától kezdve érvényes: Ha több rendelkezésre állási zónában helyez üzembe AKS-fürtöket, az AKS mostantól zónaredundáns tárolást (ZRS) használ felügyelt lemezek létrehozásához a beépített tárolási osztályokon belül.
    • A ZRS biztosítja a Azure felügyelt lemezek szinkron replikálását a kiválasztott régió több Azure rendelkezésre állási zónájában. Ez a redundanciastratégia javítja az alkalmazások rugalmasságát, és védi az adatokat az adatközpontok meghibásodásai ellen.
      • Fontos azonban megjegyezni, hogy a ZRS a helyileg redundáns tároláshoz (LRS) képest magasabb költséggel jár. Ha a költségoptimalizálás prioritás, létrehozhat egy új tárolási osztályt az LRS termékváltozat névparaméterével, és használhatja azt a PVC-ben.

A PVC méretének csökkentése az adatvesztés kockázata miatt nem támogatott. A parancs használatával kubectl edit sc szerkesztheti a meglévő tárosztályokat, vagy létrehozhat saját egyéni tárosztályt.

Megjegyzés:

A tartós kötet-igények GiB-ben kerülnek megadásra, de az Azure által felügyelt lemezek egy adott méret alapján termékváltozat alapján kerülnek számlázásra. Ezek az SKU-k az S4 vagy P4 lemezek esetében 32 GiB-tól az S80 vagy P80 lemezek esetében 32 TiB-ig terjednek (előzetes verzióban). A Prémium SSD átviteli sebessége és IOPS-teljesítménye az AKS-fürt csomópontjainak termékváltozatától és példányméretétől is függ. További információ: Felügyelt lemezek díjszabása és teljesítménye.

A parancs használatával kubectl get sc megtekintheti az előre létrehozott tárosztályokat. Az alábbi példa egy AKS-fürtben elérhető előre létrehozott tárolási osztályokat mutatja be:

kubectl get sc

A kimenetnek a következő példakimenethez kell hasonlítania, amely magában foglalja a default és a managed-csi-premium Azure lemezekhez előre létrehozott tárolási osztályokat:

NAME                  PROVISIONER               AGE
default (default)     disk.csi.azure.com        1h
managed-csi-premium   disk.csi.azure.com        1h

Egyéni tárolóosztályok létrehozása dinamikus perzisztens tárolóvolumenekhez Azure Lemezekkel

Az alapértelmezett tárolási osztályok a legtöbb forgatókönyvhöz megfelelőek. Bizonyos esetekben előfordulhat, hogy saját tárolóosztályt szeretne testreszabni a saját paramétereivel. Előfordulhat például, hogy módosítani szeretné az osztályt volumeBindingMode .

Használhat olyan volumeBindingMode: Immediate osztályt, amely garantálja, hogy a PVC létrehozása után azonnal megtörténik. Ha a csomópontkészletek topológiailag korlátozottak, például amikor rendelkezésre állási zónákat használunk, a tartós tárolók a pod ütemezési követelményeinek ismerete nélkül lesznek hozzárendelve vagy létrehozva.

Ennek a forgatókönyvnek a megoldásához használhatja volumeBindingMode: WaitForFirstConsumer-t, amely késlelteti a PV-kötés és kiépítés megkezdését addig, amíg létre nem jön egy PVC-t használó pod. Így a PV összhangban van és kiépítésre kerül a pod ütemezési kényszerei által megszabott rendelkezésre állási zónában (vagy más topológiában). Az alapértelmezett tárolási osztályok osztályt használnak volumeBindingMode: WaitForFirstConsumer .

  1. Hozzon létre egy fájlt, neve sc-azuredisk-csi-waitforfirstconsumer.yaml, és illessze be a következő YAML-manifesztumot. A tárolási osztály megegyezik a tárolási osztályunkkal managed-csi , de egy másik volumeBindingMode osztálysal.

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: azuredisk-csi-waitforfirstconsumer
    provisioner: disk.csi.azure.com
    parameters:
      skuName: StandardSSD_LRS
    allowVolumeExpansion: true
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    
  2. Hozza létre a tárosztályt a kubectl apply paranccsal, és adja meg a sc-azuredisk-csi-waitforfirstconsumer.yaml fájlt:

    kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
    

A Azure lemezekkel rendelkező dinamikus PV-k tárolási osztályparaméterei

Az alábbi táblázat olyan paramétereket tartalmaz, amelyekkel egyéni tárolási osztályt határozhat meg a dinamikus állandó kötet jogcímeihez (PVC-k) Azure Lemezek használatával:

Név Meaning Elérhető értékek Kötelező Alapértelmezett érték
skuName Azure Lemeztárfiók típusa (alias: storageAccountType). PremiumV2_LRS és UltraSSD_LRS támogatja az azonnali hozzáférést a növekményes pillanatkép-visszaállításokhoz. Standard_LRS, Premium_LRS, StandardSSD_LRS, PremiumV2_LRSUltraSSD_LRS, Premium_ZRSStandardSSD_ZRS Nem StandardSSD_LRS
fsType Fájlrendszer típusa ext4, ext3, ext2Linux xfsbtrfs esetén
ntfs Windows-hez
Nem ext4 Linux esetén
ntfs Windows-hez
cachingMode Azure adatlemez-gazdagépgyorsítótár beállítása (A PremiumV2_LRS és az UltraSSD_LRS csak a None gyorsítótárazási módot támogatja) \, \, \ Nem ReadOnly
resourceGroup Adja meg a Azure lemezek erőforráscsoportját Meglévő erőforráscsoport neve Nem Ha üres, a meghajtó ugyanazt az erőforráscsoport-nevet használja, mint az aktuális AKS-fürt.
DiskIOPSReadWrite Ultralemezes vagy Prémium SSD v2 IOPS-képesség (minimum: 2 IOPS/GiB) 100~160000 Nem 500
DiskMBpsReadWrite Ultralemez vagy Prémium SSD v2 átviteli sebesség (minimum: 0,032/GiB) 1~2000 Nem 100
LogicalSectorSize Logikai szektor mérete bájtban az Ultra Disk esetében. 512, 4096 Nem 4096
tags Azure Lemez címkék Címkeformátum: key1=val1,key2=val2 Nem ""
diskEncryptionSetID A lemeztitkosítási készlet erőforrás-azonosítója a nyugalmi állapotban lévő titkosítás engedélyezéséhez formátum: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} Nem ""
diskEncryptionType A lemeztitkosítási csoport titkosítási típusa. EncryptionAtRestWithCustomerKey (alapértelmezés szerint), EncryptionAtRestWithPlatformAndCustomerKeys Nem EncryptionAtRestWithCustomerKey
writeAcceleratorEnabled Írásgyorsító az Azure-lemezeken true, false Nem ""
networkAccessPolicy NetworkAccessPolicy tulajdonságot, hogy megakadályozza a SAS URI létrehozását egy lemezhez vagy egy pillanatképhez. \, \, \ Nem AllowAll
diskAccessID Azure DiskAccess-erőforrás azonosítójának használata privát végpontokhoz a lemezen Nem ``
enableBursting Engedélyezze az igény szerinti kitörést a lemez kiosztott teljesítménycélján túl. Igény szerinti kipukkadás csak prémium szintű lemezre és 512 GB lemezméret > esetén alkalmazható. Az Ultra és a megosztott lemez nem támogatott. A kipukkadás alapértelmezés szerint le van tiltva. true, false Nem false
userAgent Ügyfélhasználat-hozzárendeléshez használt felhasználói ügynök Nem Generált felhasználói ügynök formátuma: driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Adja meg Azure előfizetés-azonosítót, ahol a Azure lemezek létrejönnek. Ha nem üres, resourceGroup meg kell adni. Azure előfizetés azonosítója Nem
--- A következő paraméterek csak a 2. v2-hez tartoznak --- --- ---
maxShares A lemezhez engedélyezett megosztott lemezcsatlakozások teljes száma. Az érték 2 vagy több értékre állítása lehetővé teszi a mellékletreplikák létrehozását. A támogatott értékek a lemez méretétől függenek. A támogatott értékekről a A Azure felügyelt lemez megosztásáról olvashat. Nem 1
maxMountReplicaCount A karbantartandó replikák mellékleteinek száma. Ennek az értéknek a tartományban kell lennie [0..(maxShares - 1)] Nem Ha accessModeReadWriteMany, akkor az alapértelmezett 0. Ellenkező esetben az alapértelmezett érték a következő: maxShares - 1

Fontos

A tags tárolási osztály paramétere a felügyelt lemezre lesz alkalmazva, amikor a Azure lemez CSI-illesztőprogramja kiépíti a kötetet. Az állandó kötet létrehozása után a PersistentVolume specifikáció nem módosítható, ezért a PV szerkesztése vagy javítása sikertelen a címkék vagy más kötetattribútumok módosításához. A tárolási osztály későbbi frissítése csak az újonnan kiépített köteteket érinti.

Meglévő kötet címkéinek frissítéséhez változtassa meg a címkéket az Azure alapjául szolgáló felügyelt lemezen. Ez a művelet nem szakítja meg a meglévő csatlakoztatásokat, podokat vagy adathozzáférést, és a frissített Azure címkék nem szinkronizálódnak vissza a Kubernetes PV YAML-hez vagy metaadatokhoz. Például:

az disk update \
    --name myManagedDisk \
    --resource-group MC_myResourceGroup_myAKSCluster_eastus \
    --set tags.abc=ABC123

PVC létrehozása Azure lemezekkel

A PVC automatikusan biztosít tárolót egy tárolóosztály alapján. Ebben az esetben a PVC az előre létrehozott tárolóosztályok egyikével hozhat létre standard vagy prémium szintű Azure felügyelt lemezt.

  1. Hozzon létre egy azure-pvc.yaml nevű fájlt, és illessze be az alábbi manifesztet. A jogcím egy azure-managed-disk nevű, 10 GB méretű és ReadWriteOnce hozzáféréssel rendelkező lemezt kér. A felügyelt-csi tárolási osztály tárolóosztályként van megadva.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azure-managed-disk
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: managed-csi
      resources:
        requests:
          storage: 10Gi
    

    Jótanács

    A prémium szintű tárterületet használó lemez létrehozásához használja storageClassName: managed-csi-premium a managed-csi helyett.

  2. Hozza létre a PVC-t a kubectl apply paranccsal, és adja meg az azure-pvc.yaml fájlt:

    kubectl apply -f azure-pvc.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    persistentvolumeclaim/azure-managed-disk created
    
  3. Ellenőrizze, hogy a PV készen áll-e egy pod általi használatra a kubectl describe pvc parancs segítségével:

    kubectl describe pvc azure-managed-disk
    

    A kimenetnek a következő példakimenetre kell hasonlítania, amely azt mutatja, hogy a PV függőben sztátuszban van:

    Name:            azure-managed-disk
    Namespace:       default
    StorageClass:    managed-csi
    Status:          Pending
    [...]
    

PVC-t használó pod létrehozása Azure Lemezekkel

  1. Hozzon létre egy azure-pvc-disk.yaml nevű fájlt, és illessze be az alábbi manifesztet. Ez a jegyzék egy alapszintű NGINX-podot hoz létre, amely a azure-managed-disk nevű állandó kötet jogcímet használja a Azure Lemez csatlakoztatásához a /mnt/azure elérési úthoz. (Windows Server tárolók esetében adjon meg egy mountPath a Windows elérésiút-konvencióval, például 'D:').

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
        - name: mypod
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          volumeMounts:
            - mountPath: "/mnt/azure"
              name: volume
              readOnly: false
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-managed-disk
    
  2. Hozza létre a podot a kubectl apply paranccsal.

    kubectl apply -f azure-pvc-disk.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    pod/mypod created
    
  3. Most már rendelkezik egy futó poddal, amelyhez az Azure Lemez a /mnt/azure könyvtárban van csatlakoztatva. Ellenőrizze a pod konfigurációját a kubectl describe paranccsal.

    kubectl describe pod mypod
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amelyben az látható, hogy a kötet a azure-managed-disk nevű PVC-t használja:

    [...]
    Volumes:
    volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  azure-managed-disk
        ReadOnly:   false
        default-token-smm2n:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-smm2n
        Optional:    false
    [...]
    Events:
    Type    Reason                 Age   From                               Message
    ----    ------                 ----  ----                               -------
    Normal  Scheduled              2m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-12345678-9
    Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-12345678-9  MountVolume.SetUp succeeded for volume "default-token-smm2n"
    Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-12345678-9  MountVolume.SetUp succeeded for volume "pvc-abc0d123-4e5f-67g8-901h-ijk23l45m678"
    [...]
    

Azure lemezek kötetpillanatkép-osztályának paraméterei

Az Azure Lemezek CSI-illesztőprogramja támogatja az állandó kötetek pillanatképeinek létrehozását. Ennek a képességnek a részeként az illesztőprogram teljes vagy növekményes pillanatképeket is képes végrehajtani a paraméterben incremental beállított értéktől függően.

Az alábbi táblázat részletezi azokat a paramétereket, amelyekkel egyéni kötet-pillanatkép-osztályt határozhat meg az Azure Lemezekkel készített kötet pillanatképeihez.

Név Meaning Elérhető értékek Kötelező Alapértelmezett érték
resourceGroup Erőforráscsoport pillanatképek tárolásához MEGLÉVŐ ERŐFORRÁSCSOPORT Nem Ha nincs megadva, a pillanatkép ugyanabban az erőforráscsoportban lesz tárolva, mint a forrás Azure Lemezek
incremental Teljes vagy növekményes pillanatképek készítése true, false Nem true
tags Azure Lemezek címkék Címkeformátum: 'key1=val1;key2=val2' Nem ""
userAgent Ügyfélhasználat-hozzárendeléshez használt felhasználói ügynök Nem Létrehozott formázott felhasználói ügynök driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Adja meg Azure előfizetés-azonosítót, ahol Azure Lemezek létre lesznek hozva Azure előfizetés azonosítója Nem Ha nem üres, resourceGroup meg kell adni, incremental be kell állítani false

Mennyiségi pillanatkép létrehozása PVC-ről Azure Lemezek használatával

Megjegyzés:

Mielőtt továbblép, győződjön meg arról, hogy az alkalmazás nem ír adatokat a forráslemezre.

  1. Hozzon létre egy mennyiségi pillanatkép-osztályt a kubectl apply következő paranccsal:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/storageclass-azuredisk-snapshot.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc created
    
  2. Hozzon létre egy mennyiségi pillanatképet az oktatóanyag korábbi részében létrehozott dinamikus PVC-ből a kubectl apply következő paranccsal:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
    
  3. Ellenőrizze, hogy a kötet pillanatképe sikeresen létrejött-e a kubectl describe parancs használatával:

    kubectl describe volumesnapshot azuredisk-volume-snapshot
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely azt mutatja, hogy a kötet pillanatképe készen áll a használatra:

    Name:         azuredisk-volume-snapshot
    Namespace:    default
    Labels:       <none>
    Annotations:  API Version:  snapshot.storage.k8s.io/v1
    Kind:         VolumeSnapshot
    Metadata:
      Creation Timestamp:  2020-08-27T05:27:58Z
      Finalizers:
        snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection
        snapshot.storage.kubernetes.io/volumesnapshot-bound-protection
      Generation:        1
      Resource Version:  714582
      Self Link:         /apis/snapshot.storage.k8s.io/v1/namespaces/default/volumesnapshots/azuredisk-volume-snapshot
      UID:               00aa00aa-bb11-cc22-dd33-44ee44ee44ee
    Spec:
      Source:
        Persistent Volume Claim Name:  pvc-azuredisk
      Volume Snapshot Class Name:      csi-azuredisk-vsc
    Status:
      Bound Volume Snapshot Content Name:  snapcontent-00aa00aa-bb11-cc22-dd33-44ee44ee44ee
      Creation Time:                       2020-08-31T05:27:59Z
      Ready To Use:                        true
      Restore Size:                        10Gi
    Events:                                <none>
    

Új PVC létrehozása mennyiségi pillanatkép alapján Azure Lemezek használatával

Létrehozhat egy új PVC-t egy kötet pillanatképe alapján. Ebben a szakaszban az „Készítsen pillanatképet egy PVC-ről Azure Lemezek használatával” szakaszból származó pillanatképet vesszük, és létrehozunk egy új PVC-t és egy új podot annak felhasználásához.

  1. Hozza létre a PVC-t és a podot a következő kubectl apply parancsokkal:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/pvc-azuredisk-snapshot-restored.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/nginx-pod-restored-snapshot.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
    pod/nginx-restored created
    
  2. Ellenőrizze, hogy ugyanaz a PVC-e, amelyet korábban létrehozott. Ehhez ellenőrizze a kötet tartalmát a kubectl exec parancs használatával a ls podon belüli parancs végrehajtásához:

    kubectl exec nginx-restored -- ls /mnt/azuredisk
    

    A kimenetnek az alábbi példakimenethez kell hasonlítania, amely ugyanazt a tartalmat jeleníti meg, mint az eredeti PVC, beleértve az test.txt eredeti PVC-ben létrehozott fájlt is:

    lost+found
    outfile
    test.txt
    

Kötetek klónozása Azure lemezekkel

A klónozott kötet egy meglévő Kubernetes-kötet duplikátumaként van definiálva. A Kubernetesben a kötetek klónozásával kapcsolatos további információkért tekintse meg a kötet klónozásának elméleti dokumentációját.

A Azure lemezek CSI-illesztőprogramja támogatja a kötet klónozását. A bemutatóhoz hozzon létre egy klónozott kötetet az oktatóanyag korábbi részében létrehozott dinamikus PVC-ből, és egy új podot a felhasználáshoz.

  1. Hozza létre a klónozott PVC-t és podot a következő kubectl apply parancsokkal:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/pvc-azuredisk-cloning.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/nginx-pod-restored-cloning.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    persistentvolumeclaim/pvc-azuredisk-cloning created
    pod/nginx-restored-cloning created
    
  2. Ellenőrizze, hogy a klónozott kötet tartalma megegyezik-e az eredeti kötet tartalmával. Ehhez ellenőrizze a kötet tartalmát a kubectl exec parancs használatával a ls podon belüli parancs végrehajtásához:

    kubectl exec nginx-restored-cloning -- ls /mnt/azuredisk
    

    A kimenetnek az alábbi példakimenethez kell hasonlítania, amely ugyanazt a tartalmat jeleníti meg, mint az eredeti PVC, beleértve az test.txt eredeti PVC-ben létrehozott fájlt is:

    lost+found
    outfile
    test.txt
    

Állandó kötet átméretezése állásidő nélkül Azure lemezek használatával

Megjegyzés:

Az állandó kötetek zsugorítása jelenleg nem támogatott. Ha egy meglévő, az aktuálisnál kisebb méretű PVC-t próbál kijavítani, az a következő hibaüzenethez vezet:

The persistentVolumeClaim "pvc-azuredisk" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value.

A PVC objektumának szerkesztésével nagyobb méretű kötetet kérhet a PVC-hez. Ez a módosítás elindítja a PV-t (állandó kötetet) támogató mögöttes kötet kiterjesztését. A rendszer soha nem hoz létre új PV-t a jogcím kielégítése érdekében. Ehelyett a rendszer átméretez egy meglévő kötetet.

Az AKS-ben a managed-csi beépített tárolási osztály már támogatja a bővítést, így használhatja az előzőleg létrehozott dinamikus PVC-t. A PVC 10 Gi állandó kötetet kért.

  1. Ellenőrizze a kötet aktuális méretét a kubectl exec parancs használatával a df -h podon belüli parancs végrehajtásához:

    kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely azt mutatja, hogy a kötet jelenlegi mérete 10 Gi:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdc        9.8G   42M  9.8G   1% /mnt/azuredisk
    
  2. Bővítse a PVC-t a spec.resources.requests.storage mező növelésével a kubectl patch parancs használatával. Ebben a példában a PVC méretét 15 Gi-ra növeljük:

    kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    persistentvolumeclaim/pvc-azuredisk patched
    
  3. Ellenőrizze a PV-t, hogy az új méret megjelenjen-e a PV-ben a kubectl get pv következő paranccsal:

    kubectl get pv
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely azt mutatja, hogy a PV 15 Gi-ra lett átméretezve:

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                     STORAGECLASS   REASON   AGE
    pvc-a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1   15Gi       RWO            Delete           Bound    default/pvc-azuredisk                     managed-csi             2d2h
    (...)
    
  4. Néhány perc múlva ellenőrizze a PVC-t, hogy az új méret megjelenjen-e a PVC-ben a kubectl get pvc következő paranccsal:

    kubectl get pvc pvc-azuredisk
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely azt mutatja, hogy a PVC 15 Gi-ra lett átméretezve:

    NAME            STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pvc-a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1   15Gi       RWO            managed-csi    2d2h
    
  5. Ellenőrizze, hogy a podban lévő lemez mérete az új méretre lett-e frissítve a kubectl exec parancs használatával a df -h podon belüli parancs végrehajtásához:

    kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely azt mutatja, hogy a kötet mérete 15 Gi-ra frissült:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdc         15G   46M   15G   1% /mnt/azuredisk
    

Igény szerinti kipukkadás prémium SSD-khez Azure lemezekkel

Az igény szerinti lemezkitörési modell lehetővé teszi a lemezkitöréseket, amikor az igényei túllépik a jelenlegi kapacitását. Ez a modell többletköltségeket generál, amikor a lemez felfut. Igény szerinti kipukkadás csak 512 GiB-nél nagyobb prémium SSD-k esetén érhető el. A prémium SSD-k kiépített IOPS-jával és lemezenkénti átviteli sebességével kapcsolatos további információkért lásd: Premium SSD-méret. Másik lehetőségként a kreditalapú kitörés esetén a lemez csak akkor tör ki, ha a kreditvödörben felhalmozott kitörési kreditek vannak. A hitelalapú kipukkadás nem jár többletköltségekkel, ha a lemez kipukkan. A kredit-alapú teljesítménynövelés csak a 512 GiB-nél kisebb prémium SSD-k, valamint a 1024 GiB-nél kisebb standard SSD-k esetében érhető el. További információ az igény szerinti kibővítésről: Igény szerinti kibővítés.

Fontos

Az alapértelmezett managed-csi-premium tárolási osztálynál az igény szerinti kitörés le van tiltva, és hitelalapú kitörést használ. Az alapértelmezett managed-csi-premium tárolási osztályon alapuló állandó mennyiségi jogcímek által dinamikusan létrehozott Prémium SSD-k igény szerinti kitörése is le van tiltva.

Ha prémium szintű SSD-állandó kötetet szeretne létrehozni, amelyhez engedélyezve van az igény szerinti bővítési lehetőség, létrehozhat egy új tárolási osztályt az enableBursting paraméter true beállításával, ahogy az az alábbi YAML-sablonban látható. További információt a dinamikus skálázás engedélyezéséről az Igény szerinti dinamikus skálázás című részben talál. További információ a saját tárosztály igény szerinti kipukkadással történő kiépítéséről: Repeszthető felügyelt CSI-Premium Storage osztály létrehozása.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: burstable-managed-csi-premium
provisioner: disk.csi.azure.com
parameters:
  skuName: Premium_LRS
  enableBursting: "true"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

Azure lemezek használata Windows tárolókkal

A Azure lemez CSI-illesztőprogramja támogatja Windows csomópontokat és tárolókat. Ha Windows tárolókat szeretne használni, kövesse a Windows tárolók rövid útmutatót egy Windows csomópontkészlet hozzáadásához. Miután rendelkezik egy Windows csomópontkészletével, használhatja a beépített tárolási osztályokat, például managed-csi.

  1. Helyezzen üzembe egy példa Windows-alapú állapotalapú készletet amely időbélyegeket ment a fájlba data.txt a következő kubectl apply paranccsal:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yaml
    

    A kimenetnek a következő példakimenethez kell hasonlítania:

    statefulset.apps/busybox-azuredisk created
    
  2. Ellenőrizze a pod fájljának data.txt tartalmát a kubectl exec parancs használatával a type podon belüli parancs végrehajtásához:

    kubectl exec -it statefulset-azuredisk-win-0 -- powershell -c "type c:/mnt/azuredisk/data.txt"
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely a fájlba data.txtmentett időbélyegeket jeleníti meg:

    2020-08-27 08:13:41Z
    2020-08-27 08:13:42Z
    2020-08-27 08:13:44Z
    (...)
    

Statikus PV létrehozása Azure lemezekkel

A következő szakaszok útmutatást nyújtanak egy statikus PV létrehozásához Azure Lemezek használatával. A statikus PV egy állandó kötet, amelyet a rendszergazda manuálisan hoz létre. Ez a PV a fürt podjai számára érhető el. Statikus PV használatához hozzon létre egy PVC-t, amely a PV-re hivatkozik, majd hozzon létre egy podot, amely a PVC-re hivatkozik.

A Azure lemezekkel rendelkező statikus PV-k tárolási osztályparaméterei

Az alábbi táblázat olyan paramétereket tartalmaz, amelyekkel egyéni tárolási osztályt határozhat meg a statikus PVC-k számára Azure Lemezek használatával:

Név Meaning Elérhető értékek Kötelező Alapértelmezett érték
volumeHandle Azure lemez URI-ja /subscriptions/{sub-id}/resourceGroups/{group-name}/providers/microsoft.compute/disks/{disk-id} Igen N/A
volumeAttributes.fsType Fájlrendszer típusa ext4, ext3, ext2Linux xfsbtrfs esetén
ntfs Windows-hez
Nem ext4 Linux esetén
ntfs Windows-hez
volumeAttributes.partition A meglévő lemez partíciószáma (csak Linuxon támogatott) \, \, \ Nem Üres (nincs partíció) Győződjön meg arról, hogy a partíció formátuma a következő: -part1
volumeAttributes.cachingMode Lemezgazdagyorsítótár-beállítás \, \, \ Nem ReadOnly

Azure lemez létrehozása

Amikor Azure lemezt hoz létre az AKS-hez való használatra, létrehozhatja a lemezerőforrást a csomópont erőforráscsoportjában. Ez a módszer lehetővé teszi az AKS-fürt számára a lemezerőforrás elérését és kezelését. Ha ehelyett egy külön erőforráscsoportban hozza létre a lemezt, a fürt AKS által felügyelt identitásának meg kell adnia a Contributor szerepkört a lemez erőforráscsoportjának.

  1. Azonosítsa a csomópont erőforráscsoportjának nevét a az aks show paraméterrel rendelkező --query nodeResourceGroup paranccsal.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    A kimenetnek az alábbi példakimenethez kell hasonlítania, amely az AKS-fürt csomópont-erőforráscsoportjának nevét jeleníti meg:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Hozzon létre egy lemezt a az disk create paranccsal. Adja meg a csomópont erőforráscsoportjának nevét és a lemezerőforrás nevét, például a myAKSDisk nevet. Az alábbi példa egy 20 GiB-lemezt hoz létre, és a létrehozás után adja ki a lemez azonosítóját. Ha lemezt kell létrehoznia Windows Server tárolókhoz, adja hozzá a --os-type windows paramétert a lemez megfelelő formázásához.

    az disk create \
      --resource-group MC_myResourceGroup_myAKSCluster_eastus \
      --name myAKSDisk \
      --size-gb 20 \
      --query id --output tsv
    

    Megjegyzés:

    Az Azure lemezeket az adott mérethez tartozó SKU alapján számlázzák ki. Ezek az SKU-k az S4 vagy P4 lemezek esetében 32 GiB-tól az S80 vagy P80 lemezek esetében 32 TiB-ig terjednek (előzetes verzióban). A prémium szintű felügyelt lemezek átviteli sebessége és IOPS-teljesítménye az AKS-fürt csomópontjainak termékváltozatától és példányméretétől is függ. Lásd: A kezelt lemezek árképzése és teljesítménye.

    A kimenetnek a következő példakimenethez kell hasonlítania, amely a létrehozott lemez erőforrás-azonosítóját jeleníti meg:

    /subscriptions/<subscriptionID>/resourceGroups/MC_myResourceGroup_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
    

Az Azure lemezre hivatkozó PV és PVC létrehozása

  1. Hozzon létre egy pv-azuredisk.yaml fájlt egy PV-vel az alábbi példajegyzék használatával. Frissítse a volumeHandle elemet az előző lépés lemezerőforrás-azonosítójával. Windows Server tárolók esetében adja meg a ntfs paramétert a fsType paraméterhez.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: disk.csi.azure.com
      name: pv-azuredisk
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: managed-csi
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myResourceGroup_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
        volumeAttributes:
          fsType: ext4
    

    Az Azure lemez létrehozása című részben említettük, hogy ha a volumeHandle lemezt külön erőforráscsoportban hozták létre, akkor az AKS-fürt menedzselt identitásának meg kell adni a Contributor szerepkört a lemez erőforráscsoportjához.

  2. Hozzon létre egy pvc-azuredisk.yaml fájlt, amely PVC a PV-t használja a következő példajegyzékkel:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. Hozza létre a PV-t és a PVC-t a következő kubectl apply parancsokkal:

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. Ellenőrizze, hogy a PVC sikeresen létrejött-e, és a PV-hez van-e kötve a kubectl get pvc következő paranccsal:

    kubectl get pvc pvc-azuredisk
    

    A kimenetnek a következő példakimenethez kell hasonlítania, amely azt mutatja, hogy a PVC kötött állapotban van:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    

Hozzon létre egy podot, amely a PVC-t használja, Azure-lemezeket használva

  1. Hozzon létre egy azure-disk-pod.yaml fájlt a PVC-re való hivatkozáshoz az alábbi példajegyzék használatával. (Windows Server tárolók esetében adjon meg egy mountPath a Windows elérésiút-konvencióval, például 'D:').

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      containers:
      - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        name: mypod
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
          - name: azure
            mountPath: /mnt/azure
      volumes:
        - name: azure
          persistentVolumeClaim:
            claimName: pvc-azuredisk
    
  2. Alkalmazza a konfigurációt, és csatlakoztassa a kötetet a kubectl apply parancs használatával.

    kubectl apply -f azure-disk-pod.yaml
    

Erőforrások tisztítása

  • Távolítsa el az oktatóanyagban létrehozott erőforrásokat a következő [kubectl delete][kubectl-delete] parancsokkal:

    # Remove the pod
    kubectl delete -f azure-pvc-disk.yaml
    
    # Remove the persistent volume claim
    kubectl delete -f azure-pvc.yaml