Sdílet prostřednictvím


Vytvoření a používání svazku s disky Azure v prostředí Azure Kubernetes Service (AKS)

Trvalý svazek představuje část úložiště zřízenou pro použití s pody Kubernetes. Trvalý svazek můžete použít s jedním nebo několika pody a můžete ho dynamicky nebo staticky zřídit. V tomto článku se dozvíte, jak dynamicky vytvářet trvalé svazky s disky Azure v clusteru Azure Kubernetes Service (AKS).

Poznámka:

Disk Azure je možné připojit pouze s typem accessového režimu ReadWriteOnce, který zpřístupňuje jeden uzel v AKS. Tento režim přístupu stále umožňuje více podům přistupovat ke svazku, když pody běží na stejném uzlu. Další informace najdete v tématu Režimy přístupu Kubernetes PersistentVolume.

V tomto článku se dozvíte, jak:

  • Pracujte s dynamickým trvalým svazkem (PV) instalací ovladače Rozhraní úložiště kontejneru (CSI) a dynamickým vytvořením jednoho nebo více spravovaných disků Azure pro připojení k podu.
  • Pracujte se statickou pv vytvořením jednoho nebo více spravovaných disků Azure nebo použijte existující disk a připojte ho k podu.

Další informace o svazcích Kubernetes najdete v tématu Možnosti úložiště pro aplikace v AKS.

Než začnete

  • Ujistěte se, že máte nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

  • Ovladač CSI disku Azure má limit svazků pro jednotlivé uzly. Počet svazků se změní na základě velikosti fondu uzlů nebo uzlů. Spuštěním příkazu kubectl get určete počet svazků, které je možné přidělit na uzel:

    kubectl get CSINode <nodename> -o yaml
    

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

Dynamické zřizování svazku

Tato část obsahuje pokyny pro správce clusteru, kteří chtějí zřídit jeden nebo více trvalých svazků, které obsahují podrobnosti o úložišti Disků Azure pro použití úlohou. Deklarace identity trvalého svazku (PVC) používá objekt třídy úložiště k dynamickému zřízení kontejneru azure Disk Storage.

Parametry třídy úložiště pro dynamické trvalé svazky

Následující tabulka obsahuje parametry, které můžete použít k definování vlastní třídy úložiště pro persistentVolumeClaim.

Název Význam Dostupná hodnota Povinný Default value
skuName Typ účtu úložiště Disků Azure (alias: storageAccountType) Standard_LRS, Premium_LRS, StandardSSD_LRS, PremiumV2_LRS, UltraSSD_LRS, , Premium_ZRSStandardSSD_ZRS No StandardSSD_LRS
fsType Typ systému souborů ext4, ext3, ext2, , btrfs xfspro Linux, ntfs pro Windows No ext4 pro Linux, ntfs pro Windows
cachingMode Nastavení mezipaměti hostitele Azure Data Disk (PremiumV2_LRS a UltraSSD_LRS podporují None pouze režim ukládání do mezipaměti) None, , ReadOnlyReadWrite No ReadOnly
resourceGroup Určení skupiny prostředků pro disky Azure Název existující skupiny prostředků No Pokud je prázdný, ovladač použije stejný název skupiny prostředků jako aktuální cluster AKS.
DiskIOPSReadWrite Disk UltraSSD nebo funkce IOPS ssd úrovně Premium v2 (minimálně 2 IOPS/GiB) 100~160000 No 500
DiskMBpsReadWrite Disk úrovně UltraSSD nebo propustnost ssd úrovně Premium v2 (minimálně: 0.032/GiB) 1 ~2000 No 100
LogicalSectorSize Velikost logického sektoru v bajtech disku úrovně Ultra. Podporované hodnoty jsou 512 ad 4096. Výchozí hodnota je 4096. 512, 4096 No 4096
značky Značky disků Azure Formát značky: key1=val1,key2=val2 No ""
diskEncryptionSetID ResourceId šifrování disku nastavené pro povolení šifrování neaktivních uložených dat formát: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} No ""
diskEncryptionType Typ šifrování sady šifrování disku EncryptionAtRestWithCustomerKey(ve výchozím nastavení) EncryptionAtRestWithPlatformAndCustomerKeys No ""
writeAcceleratorEnabled Akcelerátor zápisu na discích Azure true, false No ""
networkAccessPolicy Vlastnost NetworkAccessPolicy, která brání generování identifikátoru URI SAS pro disk nebo snímek AllowAll, , DenyAllAllowPrivate No AllowAll
diskAccessID ID prostředku Azure DiskAccess pro použití privátních koncových bodů na discích No ``
enableBursting Povolte nárazové zvýšení na vyžádání nad rámec zřízeného cíle výkonu disku. Nárazové rozšíření na vyžádání by se mělo použít jenom na disk Premium a velikost disku > 512 GB. Disk úrovně Ultra a sdílený disk se nepodporují. Ve výchozím nastavení je shlukování zakázané. true, false No false
useragent Uživatelský agent používaný pro přisuzování využití zákazníka No Vygenerovaný uživatelský agent naformátovaný driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Zadejte ID předplatného Azure, ve kterém se vytvářejí disky Azure. ID předplatného Azure No Pokud není prázdný, resourceGroup je nutné zadat.
--- Následující parametry jsou určené pouze pro verzi 2. --- --- ---
maxShares Celkový počet připojení sdílených disků povolených pro disk. Nastavení hodnoty na 2 nebo více umožňuje repliky příloh. Podporované hodnoty závisí na velikosti disku. Podporované hodnoty najdete v tématu Sdílení spravovaného disku Azure. No 0
maxMountReplicaCount Počet příloh replik, které se mají zachovat. Tato hodnota musí být v rozsahu. [0..(maxShares - 1)] No Pokud accessMode je ReadWriteMany, výchozí hodnota je 0. V opačném případě je výchozí hodnota maxShares - 1

Předdefinované třídy úložiště

Třídy úložiště definují, jak se dynamicky vytváří jednotka úložiště s trvalým svazkem. Další informace o třídách úložiště Kubernetes najdete v tématu Třídy úložiště Kubernetes.

Každý cluster AKS obsahuje čtyři předem připravené třídy úložiště, dvě z nich nakonfigurované pro práci s disky Azure:

  1. Výchozí třída úložiště zřídí disk Azure SSD úrovně Standard.
    • Disky SSD úrovně Standard zálohují úložiště úrovně Standard a poskytují nákladově efektivní úložiště a přitom stále zajišťují spolehlivý výkon.
  2. Spravovaná třída úložiště csi-Premium zřídí disk Azure úrovně Premium.
    • Disky SSD s vysokým výkonem a nízkou latencí zpět na disky Premium. Jsou ideální pro virtuální počítače s produkčními úlohami. Pokud v AKS používáte ovladač CSI disku Azure, můžete také použít managed-csi třídu úložiště, která je podporována místně redundantním úložištěm SSD úrovně Standard (LRS).
  3. Počínaje Kubernetes verze 1.29 platí, že když nasadíte clustery Azure Kubernetes Service (AKS) napříč několika zónami dostupnosti, AKS teď využí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 zónami dostupnosti Azure 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 zónově redundantní úložiště (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 v trvalé deklaraci identity svazku.

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ě. Pokud například chcete použít disk s velikostí 4 TiB, musíte vytvořit třídu úložiště, která definuje cachingmode: None , že ukládání do mezipaměti disku není podporováno pro disky 4 TiB a větší. Další informace o třídách úložiště a vytvoření vlastní třídy úložiště najdete v tématu Možnosti úložiště pro aplikace v AKS.

Předem připravené třídy úložiště můžete zobrazit pomocí kubectl get sc příkazu. Následující příklad ukazuje předem připravené třídy úložiště dostupné v clusteru AKS:

kubectl get sc

Výstup příkazu se podobá následujícímu příkladu:

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

Poznámka:

Deklarace identity trvalých svazků jsou zadané v GiB, ale spravované disky Azure se účtují podle skladové položky za konkrétní velikost. Tyto skladové položky jsou od 32GiB pro disky S4 nebo P4 až po 32TiB pro disky S80 nebo P80 (ve verzi Preview). Výkon propustnosti a vstupně-výstupních operací za sekundu spravovaného disku Úrovně Premium závisí na SKU i velikosti instance uzlů v clusteru AKS. Další informace najdete v tématu Ceny a výkon spravovaných disků.

Vytvoření deklarace trvalého svazku

Deklarace trvalého svazku automaticky zřizuje úložiště na základě 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í standardního nebo prémiového spravovaného disku Azure.

  1. Vytvořte soubor s názvem azure-pvc.yaml a zkopírujte ho v následujícím manifestu. Deklarace identity požaduje disk s názvem azure-managed-disk o velikosti 5 GB s přístupem ReadWriteOnce . Třída úložiště managed-csi je určena jako třída úložiště.

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

Tip

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

  1. Vytvořte deklaraci identity trvalého svazku kubectl apply pomocí příkazu a zadejte soubor azure-pvc.yaml .

    kubectl apply -f azure-pvc.yaml
    

    Výstup příkazu se podobá následujícímu příkladu:

    persistentvolumeclaim/azure-managed-disk created
    

Použití trvalého svazku

Po vytvoření trvalé deklarace identity svazku je nutné ověřit, že má stav Pending. Stav Pending označuje, že je připravený k použití podem.

  1. Pomocí příkazu ověřte stav PVC kubectl describe pvc .

    kubectl describe pvc azure-managed-disk
    

    Výstup příkazu vypadá podobně jako v následujícím zhuštěném příkladu:

    Name:            azure-managed-disk
    Namespace:       default
    StorageClass:    managed-csi
    Status:          Pending
    [...]
    
  2. Vytvořte soubor s názvem azure-pvc-disk.yaml a zkopírujte ho v následujícím manifestu. Tento manifest vytvoří základní pod NGINX, který pomocí deklarace identity trvalého svazku s názvem azure-managed-disk připojí disk Azure k cestě /mnt/azure. Pro kontejnery Windows Serveru zadejte cestu mountPath pomocí konvence cesty systému 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
    
  3. Vytvořte pod pomocí kubectl apply příkazu.

     kubectl apply -f azure-pvc-disk.yaml
    

    Výstup příkazu se podobá následujícímu příkladu:

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

     kubectl describe pod mypod
    

    Výstup příkazu se podobá následujícímu příkladu:

    [...]
    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-79590246-0
      Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-smm2n"
      Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242"
    [...]
    

Použití disků Azure úrovně Ultra

Pokud chcete použít disk Úrovně Ultra Azure, přečtěte si téma Použití disků úrovně Ultra ve službě Azure Kubernetes Service (AKS).

Použití značek Azure

Další informace o používání značek Azure najdete v tématu Použití značek Azure ve službě Azure Kubernetes Service (AKS).

Statické zřízení svazku

Tato část obsahuje pokyny pro správce clusteru, kteří chtějí vytvořit jeden nebo více trvalých svazků, které obsahují podrobnosti o discích Azure pro použití úlohou.

Statické parametry zřizování pro trvalý svazek

Následující tabulka obsahuje parametry, které můžete použít k definování trvalého svazku.

Název Význam Dostupná hodnota Povinný Default value
volumeHandle Identifikátor URI disku Azure /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} Yes
volumeAttributes.fsType Typ systému souborů ext4, ext3, ext2, , btrfs xfspro Linux, ntfs pro Windows No ext4 pro Linux, ntfs pro Windows
volumeAttributes.partition Počet oddílů existujícího disku (podporuje se jenom v Linuxu) 1, , 23 No Prázdné (bez oddílu)
– ujistěte se, že je formát oddílu podobný. -part1
volumeAttributes.cachingMode Nastavení mezipaměti hostitele disku None, , ReadOnlyReadWrite No ReadOnly

Vytvoření disku Azure

Když vytvoříte disk Azure pro použití s AKS, můžete prostředek disku vytvořit 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 vytvoříte disk v samostatné skupině prostředků, musíte udělit spravované identitě Azure Kubernetes Service (AKS) pro váš cluster Contributor roli skupině prostředků disku.

  1. Pomocí příkazu identifikujte název az aks show skupiny prostředků a přidejte --query nodeResourceGroup parametr.

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

    Výstup příkazu se podobá následujícímu příkladu:

    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 20GiB a po vytvoření vypíše ID disku. Pokud potřebujete vytvořit disk pro použití s kontejnery Windows Serveru, přidejte --os-type windows parametr 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:

    Disky Azure se účtují podle skladové položky za konkrétní velikost. Tyto skladové položky jsou od 32GiB pro disky S4 nebo P4 až po 32TiB pro disky S80 nebo P80 (ve verzi Preview). Výkon propustnosti a IOPS spravovaného disku Úrovně Premium závisí na skladové posílce i velikosti instancí uzlů v clusteru AKS. Viz ceny a výkon Spravované disky.

    ID prostředku disku se zobrazí po úspěšném dokončení příkazu, jak je znázorněno v následujícím příkladu výstupu. ID disku použijete k připojení disku v další části.

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

Připojení disku jako svazku

  1. Vytvořte soubor pv-azuredisk.yaml s trvalým souboremVolume. Aktualizujte volumeHandle ID prostředku disku z předchozího kroku. Pro kontejnery Windows Serveru zadejte pro parametr fsType ntfs.

    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_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
        volumeAttributes:
          fsType: ext4
    
  2. Vytvořte soubor pvc-azuredisk.yaml s TrvalýVolumeClaim , který používá PersistentVolume.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. Pomocí příkazu vytvořte PersistentVolume a PersistentVolumeClaim kubectl apply a odkazujte na dva soubory YAML, které jste vytvořili.

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. Pomocí příkazu ověřte, že je váš PersistentVolumeClaim vytvořený a svázaný s TrvalýVolumekubectl get pvc.

    kubectl get pvc pvc-azuredisk
    

    Výstup příkazu se podobá následujícímu příkladu:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    
  5. Vytvořte soubor azure-disk-pod.yaml , který bude odkazovat na soubor PersistentVolumeClaim. Pro kontejnery Windows Serveru zadejte cestu mountPath pomocí konvence cesty systému 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
    
  6. Použijte konfiguraci a připojte svazek pomocí kubectl apply příkazu.

    kubectl apply -f azure-disk-pod.yaml
    

Vyčištění prostředků

Až budete s prostředky vytvořenými v tomto článku hotovi, můžete je pomocí kubectl delete příkazu odebrat.

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

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

Další kroky