Kötet létrehozása és használata az Azure Lemezekkel az Azure Kubernetes szolgáltatásban (AKS)

Az állandó kötet a Kubernetes-podokkal való használatra kiépített tárterületet jelöli. Egy állandó kötetet egy vagy több pod használatával használhat, és dinamikusan vagy statikusan is kiépítheti. Ez a cikk bemutatja, hogyan hozhat létre dinamikusan állandó köteteket az Azure Disks használatával egy Azure Kubernetes Service-fürtben.

Feljegyzés

Az Azure-lemezek csak ReadWriteOnce hozzáférési móddal csatlakoztathatók, ami az AKS egy csomópontja számára teszi elérhetővé. Ez a hozzáférési mód továbbra is lehetővé teszi, hogy több pod is hozzáférjen a kötethez, amikor a podok ugyanazon a csomóponton futnak. További információ: Kubernetes PersistentVolume hozzáférési módok.

Ez a cikk bemutatja, hogyan:

  • Dinamikus állandó kötet (PV) használata a Container Storage Interface (CSI) illesztőprogram telepítésével és egy vagy több Felügyelt Azure-lemez dinamikus létrehozásával a podhoz való csatoláshoz.
  • Statikus PV-vel dolgozhat egy vagy több Felügyelt Azure-lemez létrehozásával, vagy meglévő használatával, és csatolhatja azt egy podhoz.

A Kubernetes-kötetekkel kapcsolatos további információkért tekintse meg az AKS-alkalmazások tárolási lehetőségeit.

Mielőtt elkezdené

  • Győződjön meg arról, hogy telepítve és konfigurálva van az Azure CLI 2.0.59-es vagy újabb verziója. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

  • Az Azure Disk CSI-illesztőprogram csomópontonkénti kötetkorlátot ad meg. A kötetszám a csomópont/csomópontkészlet mérete alapján változik. Futtassa a kubectl get parancsot a csomópontonként lefoglalható kötetek számának meghatározásához:

    kubectl get CSINode <nodename> -o yaml
    

Kötet dinamikus kiépítése

Ez a szakasz útmutatást nyújt a fürt rendszergazdáinak, akik egy vagy több állandó kötetet szeretnének kiépíteni, amelyek tartalmazzák az Azure Disk Storage részleteit a számítási feladat számára. Az állandó kötetkövetelés (PVC) a tárolási osztály objektumával dinamikusan kiépíteni egy Azure Disk Storage-tárolót.

A dinamikus PersistentVolumes tárolási osztályparaméterei

Az alábbi táblázat olyan paramétereket tartalmaz, amelyekkel egyéni tárosztályt definiálhat a PersistentVolumeClaim-hez.

Név Értelmezés Elérhető érték Kötelező Alapértelmezett érték
skuName Azure Disks Storage-fiók típusa (alias: storageAccountType) Standard_LRS, Premium_LRS, StandardSSD_LRS, PremiumV2_LRSUltraSSD_LRS, Premium_ZRSStandardSSD_ZRS Nem StandardSSD_LRS
fsType Fájlrendszer típusa ext4, ext3, ext2, xfsbtrfs Linuxhoz, ntfs Windowshoz Nem ext4 Linuxhoz, ntfs Windowshoz
cachingMode Az Azure Data Disk gazdagépgyorsítótár-beállítása None, , ReadOnlyReadWrite Nem ReadOnly
resourceGroup Az Azure Disks erőforráscsoportjának megadása Meglévő erőforráscsoport neve Nem Ha üres, az illesztőprogram ugyanazt az erőforráscsoportnevet használja, mint az aktuális AKS-fürt
DiskIOPSReadWrite UltraSSD lemez vagy Prémium SSD v2 IOPS-képesség (minimum: 2 IOPS/GiB) 100~160000 Nem 500
DiskMBpsReadWrite UltraSSD lemez vagy Prémium SSD v2 átviteli sebesség (minimum: 0,032/GiB) 1~2000 Nem 100
LogicalSectorSize Logikai szektor mérete bájtban ultralemez esetén. A támogatott értékek: 512 ad 4096. Az alapértelmezett érték a 4096. 512, 4096 Nem 4096
címkét Azure Disk-címkék Címkeformátum: key1=val1,key2=val2 Nem ""
diskEncryptionSetID A lemeztitkosítási csoport ResourceId azonosítója, amely a inaktív titkosítás engedélyezéséhez használható 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 ""
writeAcceleratorEnabled Gyorsító írása Azure-lemezeken true, false Nem ""
networkAccessPolicy NetworkAccessPolicy tulajdonság a SAS URI lemezhez vagy pillanatképhez való létrehozásának megakadályozásához AllowAll, , DenyAllAllowPrivate Nem AllowAll
diskAccessID A DiskAccess-erőforrás Azure-erőforrás-azonosítója magánvégpontok lemezen való használatához Nem ``
enableBursting Engedélyezze az igény szerinti kipukkadá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 useragent formázva driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Adja meg az Azure-előfizetés azonosítóját, ahol az Azure Disks létrejön. Azure-előfizetés azonosítója Nem Ha nem üres, resourceGroup meg kell adni.
--- 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ékekért tekintse meg az Azure-beli felügyelt lemez megosztása című témakört. Nem 0
maxMountReplicaCount A karbantartandó replikák mellékleteinek száma. Ennek az értéknek a tartományban kell lennie [0..(maxShares - 1)] Nem Ha accessMode igenReadWriteMany, akkor az alapértelmezett érték.0 Ellenkező esetben az alapértelmezett érték a következő: maxShares - 1

Beépített tárolási osztályok

A tárolási osztályok meghatározzák, hogyan jön létre dinamikusan egy tárolóegység egy állandó kötettel. A Kubernetes storage osztályokkal kapcsolatos további információkért lásd a Kubernetes storage osztályokat.

Minden AKS-fürt négy előre létrehozott tárosztályt tartalmaz, ezek közül kettő az Azure Disks használatára van konfigurálva:

  1. Az alapértelmezett tárolási osztály egy standard SSD Azure Disk-lemezt helyez üzembe.
    • A Standard SSD-k a Standard tárolót háttérbe állítva költséghatékony tárolást biztosítanak, miközben továbbra is megbízható teljesítményt nyújtanak.
  2. A managed-csi-premium storage osztály egy prémium Szintű Azure Disket 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 az 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ás (LRS) biztosít.

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. Ha például egy 4 TiB méretű lemezt szeretne használni, létre kell hoznia egy tárosztályt, amely meghatározza cachingmode: None, hogy a lemez gyorsítótárazása nem támogatott a 4 TiB-os és annál nagyobb lemezek esetében. A tárolási osztályokról és a saját tárosztály létrehozásáról további információt az AKS-alkalmazások tárolási lehetőségei című témakörben talál.

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 parancs kimenete a következő példához hasonlít:

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

Feljegyzés

Az állandó kötetjogcímek a GiB-ben vannak megadva, de az Azure által felügyelt lemezeket egy adott mérethez tartozó termékváltozat számlázja ki. Ezek az SKU-k az S4- vagy P4-lemezek esetében 32GiB-től az S80- vagy P80-lemezeken 32TiB-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. További információ: Felügyelt lemezek díjszabása és teljesítménye.

Állandó mennyiségi jogcím létrehozása

Az állandó mennyiségi jogcímek (PVC) automatikusan kiépítik a tárolót egy tárolási osztály alapján. Ebben az esetben a PVC az egyik előre létrehozott tárolási osztályt használhatja egy standard vagy prémium szintű Felügyelt Azure-lemez létrehozásához.

  1. Hozzon létre egy fájlt, azure-pvc.yaml és másolja a következő jegyzékbe. A jogcím egy 5 GB méretű, ReadWriteOnce-hozzáféréssel rendelkező lemezt azure-managed-diskké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: 5Gi
    

Tipp.

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

  1. Hozza létre az állandó mennyiségi jogcímet a kubectl apply paranccsal, és adja meg az azure-pvc.yaml fájlt.

    kubectl apply -f azure-pvc.yaml
    

    A parancs kimenete a következő példához hasonlít:

    persistentvolumeclaim/azure-managed-disk created
    

Az állandó kötet használata

Az állandó kötet jogcímének létrehozása után ellenőriznie kell, hogy a jogcím állapota Pendinga következő. Az Pending állapot azt jelzi, hogy készen áll a podok általi használatra.

  1. Ellenőrizze a PVC állapotát a kubectl describe pvc paranccsal.

    kubectl describe pvc azure-managed-disk
    

    A parancs kimenete a következő sűrített példához hasonlít:

    Name:            azure-managed-disk
    Namespace:       default
    StorageClass:    managed-csi
    Status:          Pending
    [...]
    
  2. Hozzon létre egy fájlt, azure-pvc-disk.yaml és másolja a következő jegyzékbe. Ez a jegyzék egy alapszintű NGINX-podot hoz létre, amely az azure-managed-disk nevű állandó mennyiségi jogcímet használja az Azure Disk csatlakoztatásához az elérési úthoz/mnt/azure. Windows Server-tárolók esetén adjon meg egy mountPath-t a Windows elérési útjának konvenciója alapján, például a "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. Hozza létre a podot a kubectl apply paranccsal.

     kubectl apply -f azure-pvc-disk.yaml
    

    A parancs kimenete a következő példához hasonlít:

    pod/mypod created
    
  4. Most már rendelkezik egy futó podgal, amelyen az Azure Disk csatlakoztatva van a /mnt/azure könyvtárhoz. Ellenőrizze a pod konfigurációját a kubectl describe paranccsal.

     kubectl describe pod mypod
    

    A parancs kimenete a következő példához hasonlít:

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

Használjon Azure-ultralemezeket

Az Azure Ultra Disk használatához lásd : Ultralemezek használata az Azure Kubernetes Service-ben (AKS).

Azure-címkék használata

További információ az Azure-címkék használatáról: Azure-címkék használata az Azure Kubernetes Service-ben (AKS).

Kötet statikus kiépítése

Ez a szakasz útmutatást nyújt azoknak a fürtgazdáknak, akik egy vagy több állandó kötetet szeretnének létrehozni, amelyek tartalmazzák a számítási feladat által használt Azure Disks részleteit.

Statikus kiépítési paraméterek állandó kötethez

Az alábbi táblázat olyan paramétereket tartalmaz, amelyekkel állandó kötetet definiálhat.

Név Értelmezés Elérhető érték 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, ext2, xfsbtrfs Linuxhoz, ntfs Windowshoz Nem ext4 Linuxhoz, ntfs Windowshoz
volumeAttributes.partition A meglévő lemez partíciószáma (csak Linuxon támogatott) 1, , 23 Nem Üres (nincs partíció)
– Győződjön meg arról, hogy a partíció formátuma hasonló -part1
volumeAttributes.cachingMode Lemezgazdagyorsítótár-beállítás None, , ReadOnlyReadWrite 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, az Azure Kubernetes Service (AKS) által felügyelt identitást kell megadnia a fürt számára a Contributor lemez erőforráscsoportjának.

  1. Azonosítsa az erőforráscsoport nevét a az aks show paranccsal, és adja hozzá a paramétert --query nodeResourceGroup .

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

    A parancs kimenete a következő példához hasonlít:

    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 20GiB-lemezt hoz létre, és a létrehozás után adja ki a lemez azonosítóját. Ha Windows Server-tárolókhoz szükséges lemezt kell létrehoznia, adja hozzá a paramétert a --os-type windows lemez megfelelő formázásához.

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

    Feljegyzés

    Az Azure Disks-t egy adott mérethez tartozó termékváltozat számlázja ki. Ezek az SKU-k az S4- vagy P4-lemezek esetében 32GiB-től az S80- vagy P80-lemezeken 32TiB-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 felügyelt lemezek díjszabását és teljesítményét.

    A lemez erőforrás-azonosítója a parancs sikeres befejezése után jelenik meg, ahogyan az alábbi példakimenetben is látható. A lemez azonosítójával csatlakoztathatja a lemezt a következő szakaszban.

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

Lemez csatlakoztatása kötetként

  1. Hozzon létre egy pv-azuredisk.yaml fájlt egy PersistentVolume használatával. Frissítsen volumeHandle az előző lépés lemezerőforrás-azonosítójával. Windows Server-tárolók esetén adja meg az ntfs értéket az 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_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
        volumeAttributes:
          fsType: ext4
    
  2. Hozzon létre egy pvc-azuredisk.yaml fájlt egy PersistentVolumeClaim fájllal, amely a PersistentVolume-t használja.

    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 PersistentVolume és a PersistentVolumeClaim fájlt a kubectl apply paranccsal, és hivatkozzon a létrehozott két YAML-fájlra.

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. Ellenőrizze, hogy létrejön-e a PersistentVolumeClaim, és a parancs használatával kubectl get pvc a PersistentVolume-hoz van-e kötve.

    kubectl get pvc pvc-azuredisk
    

    A parancs kimenete a következő példához hasonlít:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    
  5. Hozzon létre egy azure-disk-pod.yaml fájlt a PersistentVolumeClaim hivatkozásához. Windows Server-tárolók esetén adjon meg egy mountPath-t a Windows elérési útjának konvenciója alapján, például a "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. Alkalmazza a konfigurációt, és csatlakoztassa a kötetet a kubectl apply parancs használatával.

    kubectl apply -f azure-disk-pod.yaml
    

Az erőforrások eltávolítása

Ha végzett a cikkben létrehozott erőforrásokkal, a parancs használatával kubectl delete eltávolíthatja őket.

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

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

Következő lépések