Vytváření a správa trvalých svazků pomocí disků Azure v Azure Kubernetes Service (AKS)

Tento článek vám ukáže, jak dynamicky a staticky vytvářet trvalé svazky (PVs) pomocí Azure Disks pro použití v jednom podu v clusteru Azure Kubernetes Service (AKS).

Předpoklady

  • Azure CLI nainstalovaná a nakonfigurovaná verze 2.0.59 nebo novější. Najděte verzi pomocí az --version příkazu. Pokud chcete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.

  • Ovladač Azure Disks CSI driver je povolen v clusteru AKS.

  • Ovladač disků Azure CSI má limit svazků na jeden uzel. Počet svazků se změní na základě velikosti uzlu nebo fondu uzlů. Pomocí příkazu můžete určit počet svazků, které se dají přidělit na každý uzel kubectl get . Například:

    kubectl get CSINode <node-name> -o yaml
    

    Pokud je limit svazku pro jednotlivé uzly problém pro vaši úlohu, zvažte použití Azure Container Storage pro trvalé svazky místo ovladačů CSI.

Integrované třídy úložiště pro dynamické virtuální počítače s Azure disky

Třídy úložiště definují, jak se dynamicky vytváří jednotka úložiště s trvalým svazkem.

Každý cluster AKS obsahuje čtyři předdefinované třídy úložiště, přičemž dva z nich jsou nakonfigurované tak, aby fungovaly s Azure disky:

  • Třída úložiště default poskytuje standardní disk Azure SSD.
    • Standardní SSD disky podporují standardní úložiště a poskytují úsporné úložiště, a zároveň poskytují spolehlivý výkon.
  • Třída úložiště managed-csi-premium provozuje disk úrovně Premium Azure.
    • Disky s vysokým výkonem a nízkou latencí, založené na technologii SSD, podporují disky Premium. Jsou ideální pro virtuální počítače, na kterých běží produkční úlohy. Pokud používáte ovladač CSI disku Azure v AKS, můžete také použít třídu úložiště managed-csi, která je podporována místně redundantním úložištěm SSD úrovně Standard (LRS).
  • Efektivní spuštění s Kubernetes verze 1.29: Když nasadíte clustery AKS napříč několika zónami dostupnosti, AKS teď používá zónově redundantní úložiště (ZRS) k vytváření spravovaných disků v rámci integrovaných tříd úložiště.
    • ZRS zajišťuje synchronní replikaci spravovaných disků Azure napříč několika Azure zónami dostupnosti ve zvolené oblasti. Tato strategie redundance zvyšuje odolnost vašich aplikací a chrání vaše data před selháními datacentra.
      • Je ale důležité si uvědomit, že ZRS má oproti místně redundantnímu úložišti (LRS) vyšší náklady. Pokud je optimalizace nákladů prioritou, můžete vytvořit novou třídu úložiště s parametrem názvu skladové položky LRS a použít ji ve vašem PVC.

Zmenšení velikosti PVC není podporováno kvůli riziku ztráty dat. Existující třídu úložiště můžete upravit pomocí kubectl edit sc příkazu nebo můžete vytvořit vlastní třídu úložiště.

Poznámka:

Požadavky na trvalé svazky jsou uvedeny v GiB, ale spravované disky Azure jsou účtovány podle SKU za konkrétní velikost. Tyto skladové položky se liší od 32 GiB pro disky S4 nebo P4 až po 32 TiB pro disky S80 nebo P80 (ve verzi Preview). Propustnost a výkon IOPS Premium SSD závisí na SKU i velikosti instance uzlů v clusteru AKS. Další informace najdete v tématu Ceny a výkon spravovaných disků.

Pomocí příkazu kubectl get sc zobrazte předem připravené třídy úložiště. Následující příklad ukazuje předem připravené třídy úložiště dostupné v clusteru AKS:

kubectl get sc

Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který zahrnuje třídy úložiště default a managed-csi-premium, které jsou předem vytvořeny pro disky Azure:

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

Vytvoření vlastních tříd úložiště pro dynamické virtuální počítače s Azure disky

Výchozí třídy úložiště jsou vhodné pro většinu scénářů. V některých případech můžete chtít mít vlastní třídu úložiště přizpůsobenou vlastními parametry. Můžete například chtít změnit volumeBindingMode třídu.

Můžete použít volumeBindingMode: Immediate třídu, která zaručuje, že k tomu dojde okamžitě po vytvoření PVC. Pokud jsou fondy uzlů omezené topologií, například při použití zón dostupnosti, budou trvalé svazky připojené nebo zřízené bez znalosti specifických požadavků na plánování podu.

Chcete-li tento scénář vyřešit, můžete použít volumeBindingMode: WaitForFirstConsumer, což zpožďuje vazbu a zřizování PV, dokud není vytvořen pod, který používá PVC. Tímto způsobem je PV v souladu a zřízen v zóně dostupnosti (nebo v jiné topologii) určené omezeními plánování pódia. Výchozí třídy úložiště používají volumeBindingMode: WaitForFirstConsumer třídu.

  1. Vytvořte soubor s názvem sc-azuredisk-csi-waitforfirstconsumer.yaml a vložte do následujícího manifestu YAML. Třída úložiště je stejná jako naše managed-csi třída úložiště, ale s jinou volumeBindingMode třídou.

    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. Pomocí příkazu vytvořte třídu kubectl apply úložiště a zadejte soubor sc-azuredisk-csi-waitforfirstconsumer.yaml :

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

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

Parametry třídy úložiště pro dynamické PV s disky Azure

Následující tabulka obsahuje parametry, které můžete použít k definování vlastní třídy úložiště pro dynamické žádosti o vytrvalé svazky (PVC) s Azure Disky:

Název Význam Dostupné hodnoty Povinné Výchozí hodnota
skuName typ účtu úložiště Azure Disky (alias: storageAccountType). PremiumV2_LRS a UltraSSD_LRS podporují okamžitý přístup pro přírůstková obnovení snímků. Standard_LRS, Premium_LRS, StandardSSD_LRS, PremiumV2_LRS, UltraSSD_LRS, , Premium_ZRSStandardSSD_ZRS Ne StandardSSD_LRS
fsType Typ systému souborů ext4, ext3, ext2, xfs, btrfs pro Linux
ntfs pro Windows
Ne ext4 pro Linux
ntfs pro Windows
cachingMode Azure Nastavení hostitelské mezipaměti pro datový disk (PremiumV2_LRS a UltraSSD_LRS podporují pouze režim ukládání do mezipaměti None) None, ReadOnly, ReadWrite Ne ReadOnly
resourceGroup Zadejte skupinu prostředků pro disky Azure Název existující skupiny prostředků Ne Pokud je prázdný, ovladač použije stejný název skupiny prostředků jako aktuální cluster AKS.
DiskIOPSReadWrite Schopnost IOPS disku Ultra nebo SSD Premium v2 (minimálně 2 IOPS/GiB) 100~160000 Ne 500
DiskMBpsReadWrite Provozní kapacita propustnosti Ultra Disk nebo Premium SSD v2 (minimálně: 0,032/GiB) 1 ~ 2000 Ne 100
LogicalSectorSize Velikost logického sektoru v bajtech pro Ultra Disk. 512, 4096 Ne 4096
tags Azure Disk tags Formát značky: key1=val1,key2=val2 Ne ""
diskEncryptionSetID ID prostředku sady šifrování disku, které se má použít k povolení šifrování neaktivních uložených dat formát: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} Ne ""
diskEncryptionType Typ šifrování sady šifrování disku EncryptionAtRestWithCustomerKey (ve výchozím nastavení) EncryptionAtRestWithPlatformAndCustomerKeys Ne EncryptionAtRestWithCustomerKey
writeAcceleratorEnabled Akcelerátor zápisu na discích Azure true, false Ne ""
networkAccessPolicy NetworkAccessPolicy vlastnost k zabránění generování identifikátoru URI SAS pro disk nebo snímek. AllowAll, DenyAll, AllowPrivate Ne AllowAll
diskAccessID Azure ID prostředku DiskAccess pro použití privátních koncových bodů na discích Ne ``
enableBursting Povolte pružné zvýšení výkonu na vyžádání nad rámec zřízeného cíle pro výkon disku. Nárazové rozšíření na vyžádání by mělo být použito pouze pro disk Premium a pokud je velikost disku > 512 GB. Disky Ultra a sdílené disky nejsou podporovány. Ve výchozím nastavení je prasknutí zakázané. true, false Ne false
userAgent Uživatelský agent používaný pro přisuzování využití zákazníka Ne Vygenerovaný formát uživatelského agenta: driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Zadejte ID předplatného Azure, ve kterém byly vytvořeny disky Azure. Pokud není prázdný, resourceGroup je nutné zadat. ID předplatného Azure Ne
--- Následující parametry jsou určené pouze pro v2. --- --- ---
maxShares Celkový počet připojení sdílených disků povolených pro disk. Nastavení hodnoty na 2 nebo více umožňuje zajištění replik příloh. Podporované hodnoty závisí na velikosti disku. Podporované hodnoty najdete v tématu Sdílení spravovaného disku Azure. Ne 1
maxMountReplicaCount Počet příloh replik, které je třeba zachovat. Tato hodnota musí být v rozsahu. [0..(maxShares - 1)] Ne Pokud accessMode je ReadWriteMany, výchozí hodnota je 0. V opačném případě je výchozí hodnota maxShares - 1

Důležité

Parametr třídy úložiště tags se použije na spravovaný disk, když ovladač Azure Disk CSI přidělí svazek. Po vytvoření trvalého svazku PersistentVolume je specifikace neměnná, takže úprava nebo oprava pv pro změnu značek nebo jiných atributů svazku selže. Aktualizace třídy úložiště později ovlivní pouze nově zřízené svazky.

Pokud chcete aktualizovat značky na existujícím svazku, změňte je na podkladovém spravovaném disku v Azure. Tato operace nepřeruší stávající připojení, pody ani přístup k datům a aktualizované Azure značky se nesynchronizují zpět do YAML nebo metadat Kubernetes PV. Například:

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

Vytvoření PVC s disky Azure

PVC automaticky zajišťuje úložiště podle třídy úložiště. V tomto případě může PVC použít jednu z předem vytvořených tříd úložiště k vytvoření spravovaného disku Azure úrovně Standard nebo Premium.

  1. Vytvořte soubor s názvem azure-pvc.yaml a vložte ho do následujícího manifestu. Požadavek požaduje disk s názvem azure-managed-disk, který má velikost 10 GB a přístup ReadWriteOnce. Třída úložiště managed-csi je specifikována jako třída úložiště.

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

    Návod

    Pokud chcete vytvořit disk, který používá Premium Storage, použijte storageClassName: managed-csi-premium místo managed-csi.

  2. Pomocí příkazu kubectl apply vytvořte PVC a zadejte soubor azure-pvc.yaml:

    kubectl apply -f azure-pvc.yaml
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    persistentvolumeclaim/azure-managed-disk created
    
  3. Ověřte, že je PV připravený k použití v podu pomocí příkazu kubectl describe pvc.

    kubectl describe pvc azure-managed-disk
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje, že pv je ve stavu Čeká na vyřízení :

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

Vytvořte pod, který používá PVC s disky Azure

  1. Vytvořte soubor s názvem azure-pvc-disk.yaml a vložte ho do následujícího manifestu. Tento manifest vytvoří základní NGINX pod, který pomocí žádosti o trvalý svazek s názvem azure-managed-disk připojí disk Azure k cestě /mnt/azure. (Pro kontejnery Windows Server zadejte mountPath pomocí konvence cesty Windows, například '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. Vytvořte pod pomocí příkazu kubectl apply.

    kubectl apply -f azure-pvc-disk.yaml
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    pod/mypod created
    
  3. Teď máte spuštěný pod s diskem Azure připojeným v adresáři /mnt/azure. Pomocí příkazu zkontrolujte konfiguraci podu kubectl describe .

    kubectl describe pod mypod
    

    Výstup by měl vypadat jako následující příklad, který ukazuje, že svazek pojmenovaný volume používá PVC s názvem azure-managed-disk:

    [...]
    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"
    [...]
    

Parametry třídy snímků svazku pro disky Azure

Ovladač disky Azure CSI podporuje vytváření snapshotů trvalých svazků. V rámci této funkce může ovladač provádět úplné nebo přírůstkové snímky v závislosti na hodnotě nastavené v parametru incremental .

Následující tabulka obsahuje podrobnosti o parametrech, které můžete použít k definování vlastní třídy snímků svazků pro vaše snímky s Azure Disks:

Název Význam Dostupné hodnoty Povinné Výchozí hodnota
resourceGroup Skupina prostředků pro ukládání snímků EXISTUJÍCÍ SKUPINA PROSTŘEDKŮ Ne Pokud není určen, snímek se uloží ve stejné skupině prostředků jako zdrojové disky Azure.
incremental Pořízení úplných nebo přírůstkových snímků true, false Ne true
tags Azure disky tags Formát tagu: 'key1=val1,key2=val2' Ne ""
userAgent Uživatelský agent používaný pro přisuzování využití zákazníka Ne Vygenerovaný uživatelský agent naformátovaný driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Zadejte ID Azure předplatného, kde se vytvoří disky Azure. ID předplatného Azure Ne Pokud není prázdný, resourceGroup musí být zadaný, incremental musí být nastaven jako false

Vytvořte snímek svazku z PVC s Azure Disks

Poznámka:

Než budete pokračovat, ujistěte se, že aplikace nezapisuje data na zdrojový disk.

  1. Vytvořte třídu snímků svazku pomocí příkazu kubectl apply.

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc created
    
  2. Pomocí příkazu vytvořte snímek svazku z dynamického PVC, který jste vytvořili dříve v tomto kurzu kubectl apply :

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
    
  3. Pomocí příkazu kubectl describe ověřte, že se snímek svazku úspěšně vytvořil:

    kubectl describe volumesnapshot azuredisk-volume-snapshot
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje, že snímek svazku je připravený k použití:

    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>
    

Vytvoření nového PVC, založeného na snímku svazku, s Azure Disks

Nový PVC můžete vytvořit na základě snímku svazku. V této části použijeme snímek z části Vytvoření snímku svazku z PVC s oddílem Azure Disky a vytvoříme nové PVC a nový pod, které ho spotřebují.

  1. Pomocí následujících kubectl apply příkazů vytvořte PVC a pod:

    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
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
    pod/nginx-restored created
    
  2. Ověřte, že se jedná o stejný PVC vytvořený dříve kontrolou obsahu svazku pomocí příkazu kubectl exec ke spuštění příkazu ls v podu:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který zobrazuje stejný obsah jako původní PVC, včetně test.txt souboru vytvořeného v původním PVC:

    lost+found
    outfile
    test.txt
    

Klonování svazků pomocí disků Azure

Klonovaný svazek se definuje jako duplikát existujícího svazku Kubernetes. Další informace o klonování svazků v Kubernetes najdete v koncepční dokumentaci ke klonování svazků.

Ovladač CSI pro disky Azure podporuje klonování svazků. Pro demonstraci vytvořte naklonovaný svazek dynamického PVC, který jste vytvořili dříve v tomto kurzu, a nový pod, který jej využije.

  1. Pomocí následujících kubectl apply příkazů vytvořte klonovaný PVC a pod:

    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
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    persistentvolumeclaim/pvc-azuredisk-cloning created
    pod/nginx-restored-cloning created
    
  2. Ověřte, že klonovaný svazek má stejný obsah jako původní svazek. Zkontrolujte obsah svazku pomocí kubectl exec příkazu ke spuštění ls příkazu v podu:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který zobrazuje stejný obsah jako původní PVC, včetně test.txt souboru vytvořeného v původním PVC:

    lost+found
    outfile
    test.txt
    

Změna velikosti trvalého svazku bez výpadků pomocí disků Azure

Poznámka:

Zmenšování trvalých svazků se v současné době nepodporuje. Pokus o opravu existujícího PVC s menší velikostí, než je aktuální, vede k následující chybové zprávě:

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

Pro PVC můžete požádat o větší objem úpravou objektu PVC a určit tak větší velikost. Tato změna aktivuje rozšíření podkladového svazku, který zálohuje trvalý svazek. Nový trvalý svazek (PV) se nikdy nevytváří, aby uspokojil požadavek. Místo toho se změní velikost existujícího svazku.

V AKS integrovaná managed-csi třída úložiště již podporuje rozšíření, takže můžete použít dynamické PVC, které jste vytvořili dříve v tomto kurzu. PVC požádal o trvalý svazek 10 GiB.

  1. Pomocí příkazu kubectl exec zkontrolujte aktuální velikost svazku a spusťte příkaz df -h v podu:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje aktuální velikost svazku 10 Gi:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdc        9.8G   42M  9.8G   1% /mnt/azuredisk
    
  2. Rozbalte PVC zvětšením pole spec.resources.requests.storage pomocí příkazu kubectl patch. V tomto příkladu zvětšíme velikost PVC na 15 Gi:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    persistentvolumeclaim/pvc-azuredisk patched
    
  3. Zkontrolujte PV a ověřte, že se nová velikost projeví v PV pomocí příkazu kubectl get pv.

    kubectl get pv
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje, že velikost pv byla změněna na 15 Gi:

    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. Po několika minutách zkontrolujte PVC a ověřte, že se nová velikost projeví v PVC pomocí kubectl get pvc příkazu:

    kubectl get pvc pvc-azuredisk
    

    Výstup by měl vypadat jako následující příklad výstupu, který ukazuje, že PVC bylo změněno na 15 Gi.

    NAME            STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pvc-a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1   15Gi       RWO            managed-csi    2d2h
    
  5. Ověřte, že se velikost disku v podu aktualizovala na novou velikost, pomocí kubectl exec příkazu spusťte df -h příkaz v podu:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje, že velikost svazku byla aktualizována na 15 Gi:

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

Nárazové rozšíření na vyžádání pro disky SSD úrovně Premium s Azure disky

Model diskového výbuchu na vyžádání umožňuje diskové výbuchy kdykoli potřeby překročí jeho aktuální kapacitu. Tento model generuje další poplatky, kdykoli se disk rozsákne. Funkce bursting na vyžádání je k dispozici pouze pro Premium SSD větší než 512 GiB. Další informace o předem definovaném IOPS a propustnosti na disk pro Premium SSD disky najdete v tématu Velikost SSD úrovně Premium. Alternativně, bursting na bázi kreditů znamená, že disk překročí svou běžnou kapacitu pouze tehdy, když má ve svém kreditovém fondu naakumulované kredity. Při kreditním shlukování se při shlukování disku negenerují žádné dodatečné poplatky. Rozšíření založené na kreditech je dostupné jenom pro disky SSD úrovně Premium 512 GiB a menší a disky SSD úrovně Standard 1024 GiB a menší. Další informace o on-demand bursting viz on-demand bursting.

Důležité

Výchozí managed-csi-premium třída úložiště má deaktivované nárazové navyšování na vyžádání a využívá nárazové nárůsty založené na kreditech. Jakékoliv SSD úrovně Premium dynamicky vytvořené požadavkem na perzistentní svazek na základě výchozí managed-csi-premium třídy úložiště má také zakázané automatické rozšíření kapacity na vyžádání.

Pokud chcete vytvořit trvalý svazek SSD úrovně Premium s povoleným jednorázovým navýšením, můžete vytvořit novou třídu úložiště s nastaveným parametrem enableBurstingtrue jak je znázorněno v následující šabloně YAML. Další informace o povolení "nárazového škálování" na vyžádání najdete v tématu Škálování na vyžádání. Další informace o vytváření vlastní třídy úložiště s pružným nárůstem na vyžádání najdete v tématu Vytvoření třídy úložiště s pružným nárůstem – spravovaná třída CSI Premium Storage.

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

Použití disků Azure s kontejnery Windows

Ovladač csI disku Azure podporuje uzly a kontejnery Windows. Pokud chcete použít kontejnery Windows, postupujte podle rychlého startu Windows kontejnerů k přidání uzlového fondu Windows. Jakmile máte fond uzlů Windows, můžete použít předdefinované třídy úložiště, jako je managed-csi.

  1. Nasaďte ukázkovou stavovou sadu založenou na Windows, která ukládá časová razítka do souboru data.txt pomocí následujícího příkazu kubectl apply:

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    statefulset.apps/busybox-azuredisk created
    
  2. Ověřte obsah souboru data.txt v podu pomocí příkazu kubectl exec pro spuštění type v podu.

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje časová razítka, která se ukládají do souboru data.txt:

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

Vytvoření statické PV s disky Azure

Následující části obsahují pokyny pro vytvoření statické PV pomocí disků Azure. Statický svazek PV je trvalý svazek, který správce vytvoří ručně. Tento PV je k dispozici pro použití pody v clusteru. Chcete-li použít statickou PV, vytvořte PVC, které odkazuje na PV, a poté vytvořte pod, který odkazuje na PVC.

Parametry třídy úložiště pro statické virtuální počítače s Azure disky

Následující tabulka obsahuje parametry, které můžete použít k definování vlastní třídy úložiště pro vaše statické PVCs s Azure Disky:

Název Význam Dostupné hodnoty Povinné Výchozí hodnota
volumeHandle identifikátor URI disku Azure /subscriptions/{sub-id}/resourceGroups/{group-name}/providers/microsoft.compute/disks/{disk-id} Ano N/A
volumeAttributes.fsType Typ systému souborů ext4, ext3, ext2, xfs, btrfs pro Linux
ntfs pro Windows
Ne ext4 pro Linux
ntfs pro Windows
volumeAttributes.partition Počet oddílů existujícího disku (podporuje se jenom v Linuxu) 1, 2, 3 Ne Prázdné (bez oddílu) Ujistěte se, že je formát oddílu: -part1
volumeAttributes.cachingMode Nastavení mezipaměti hostitele disku None, ReadOnly, ReadWrite Ne ReadOnly

Vytvoření disku Azure

Když vytvoříte Azure disk pro použití s AKS, můžete vytvořit prostředek disku ve skupině prostředků uzlu. Tento přístup umožňuje clusteru AKS přístup k prostředku disku a jeho správě. Pokud místo toho disk vytvoříte v samostatné skupině prostředků, musíte spravované identitě AKS pro váš cluster udělit roli Contributor k přístupu ke skupině prostředků disku.

  1. Identifikujte název skupiny prostředků uzlu pomocí příkazu az aks show s parametrem --query nodeResourceGroup.

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

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje název skupiny prostředků uzlu pro cluster AKS:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Vytvořte disk pomocí az disk create příkazu. Zadejte název skupiny prostředků uzlu a název prostředku disku, například myAKSDisk. Následující příklad vytvoří disk 20 GiB a po vytvoření vypíše ID disku. Pokud potřebujete vytvořit disk pro použití s kontejnery Windows Server, přidejte parametr --os-type windows pro správné formátování disku.

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

    Poznámka:

    Azure disky se účtují podle SKU za konkrétní velikost. Tyto skladové položky se liší od 32 GiB pro disky S4 nebo P4 až po 32 TiB pro disky S80 nebo P80 (ve verzi Preview). Výkon propustnosti a IOPS spravovaného disku úrovně Premium závisí na typu SKU a velikosti uzlů v clusteru AKS. Viz Pricing and Performance of Spravované disky.

    Výstup by měl vypadat podobně jako následující příklad, který ukazuje ID prostředku vytvořeného disku:

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

Vytvořit PV a PVC, které odkazují na disk Azure

  1. Pomocí následujícího ukázkového manifestu vytvořte soubor pv-azuredisk.yaml s PV. Aktualizujte volumeHandle pomocí ID prostředku disku z předchozího kroku. Pro kontejnery Windows Server zadejte ntfs jako parametr fsType.

    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
    

    Jak je uvedeno v Vytvoření disku Azure, pokud byl disk pro volumeHandle vytvořen v samostatné skupině prostředků, musíte spravované identitě clusteru AKS udělit roli Contributor skupiny prostředků disku.

  2. Vytvořte soubor pvc-azuredisk.yaml s PVC, který používá PV pomocí následujícího ukázkového manifestu:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. Pomocí následujících kubectl apply příkazů vytvořte PV a PVC:

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. Pomocí příkazu kubectl get pvc ověřte, že se váš PVC úspěšně vytvořil a vázal na PV.

    kubectl get pvc pvc-azuredisk
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu, který ukazuje, že PVC je ve vázaném stavu:

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

Vytvořte pod, který používá PVC s disky Azure

  1. Pomocí následujícího ukázkového manifestu vytvořte soubor azure-disk-pod.yaml , který bude odkazovat na váš PVC. (Pro kontejnery Windows Server zadejte mountPath pomocí konvence cesty Windows, například '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. Použijte konfiguraci a připojte svazek pomocí kubectl apply příkazu.

    kubectl apply -f azure-disk-pod.yaml
    

Vyčistěte zdroje

  • Pomocí následujících příkazů [kubectl delete][kubectl-delete] odstraňte prostředky, které jste vytvořili v tomto kurzu.

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