Share via


Az Azure Disk Container Storage Interface (CSI) illesztőprogram használata az Azure Kubernetes Service-ben (AKS)

Az Azure Disks Container Storage Interface (CSI) illesztő az Azure Kubernetes Service (AKS) által az Azure Disk életciklusának kezeléséhez használt CSI specifikációnak megfelelő illesztőprogram.

A CSI egy szabvány, amely tetszőleges blokk- és fájltároló rendszereket tár fel a Kubernetes tárolóalapú számítási feladatai számára. A CSI alkalmazásával és használatával az AKS mostantól képes beépülő modulok írására, üzembe helyezésére és iterálására a Kubernetes új vagy meglévő tárolórendszereinek elérhetővé tételéhez. A CSI-illesztőprogramok használata az AKS-ben elkerüli, hogy megérintse az alapvető Kubernetes-kódot, és várja meg a kiadási ciklusokat.

A CSI-illesztőprogramok támogatásával rendelkező AKS-fürt létrehozásához tekintse meg a CSI-illesztőprogram engedélyezése az AKS-en című témakört. Ez a cikk az Azure Disk CSI-illesztőprogram 1- es verziójának használatát ismerteti.

Feljegyzés

Az Azure Disk CSI driver v2 (előzetes verzió) javítja a méretezhetőséget, és csökkenti a pod feladatátvételi késését. Megosztott lemezeket használ a mellékletreplikák kiépítéséhez több fürtcsomóponton, és integrálva van a podütemezővel annak érdekében, hogy a pod feladatátvétele során egy mellékletreplikával rendelkező csomópontot válasszon. Az Azure Disk CSI driver v2 (előzetes verzió) lehetővé teszi a teljesítmény finomhangolását is. Ha részt szeretne venni az előzetes verzióban, küldjön egy kérést: https://aka.ms/DiskCSIv2Preview. Ez az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el, és időnként kompatibilitástörő változásokra számíthat az előzetes verzióban. Az előzetes verzió éles számítási feladatokhoz nem ajánlott. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Feljegyzés

A faalapú illesztőprogramok azokra az aktuális tárolóillesztőkre utalnak, amelyek az alapvető Kubernetes-kód részét képezik, szemben az új CSI-illesztőprogramokkal, amelyek beépülő modulok.

Az Azure Disk CSI illesztőprogram-funkciói

Az Azure Disk CSI-illesztőprogram a fa illesztőfunkciói mellett a következő funkciókat is támogatja:

  • Teljesítménybeli fejlesztések az egyidejű lemez csatolása és leválasztása során
    • A faillesztők sorosan csatolják vagy leválasztják a lemezeket, míg a CSI-illesztőprogramok kötegben csatolják vagy leválasztják a lemezeket. Jelentős javulás tapasztalható, ha több lemez csatlakozik egy csomóponthoz.
  • A prémium SSD v1 és v2 támogatott.
    • PremiumV2_LRScsak a gyorsítótárazási módot támogatja None
  • Zónaredundáns tárolás (ZRS) lemeztámogatása
    • Premium_ZRSlemeztípusok StandardSSD_ZRS támogatottak. A ZRS-lemez ütemezhető a zónában vagy a nem zónacsomóponton anélkül, hogy a lemezkötetnek ugyanabban a zónában kellene lennie, mint egy adott csomópont. További információkért, beleértve a támogatott régiókat, tekintse meg a felügyelt lemezek zónaredundáns tárolását.
  • Pillanatkép
  • Kötet klónozása
  • Lemez fotovoltaikus lemezének átméretezése állásidő nélkül

Feljegyzés

A használt virtuálisgép-termékváltozattól függően az Azure Disk CSI-illesztőprogram csomópontonkénti kötetkorlátot tartalmazhat. Egyes nagy teljesítményű virtuális gépek (például 16 mag) esetében a korlát csomópontonként 64 kötet. A virtuálisgép-termékváltozatonkénti korlát azonosításához tekintse át az egyes kínált virtuálisgép-termékváltozatok Maximális adatlemezek oszlopát. A kínált virtuálisgép-termékváltozatok listáját és azok részletes kapacitáskorlátjait az általános célú virtuálisgép-méretek című témakörben találja.

Állandó CSI-kötetek használata Az Azure Disks használatával

Az állandó kötet (PV) egy tárterületet jelöl, amely a Kubernetes-podokkal való használatra van kiépítve. A PV-t egy vagy több pod is használhatja, és dinamikusan vagy statikusan kiépítheti. Ez a cikk bemutatja, hogyan hozhat létre dinamikusan PV-ket az Azure-lemezzel, amelyeket egyetlen pod használ egy AKS-fürtben. Statikus kiépítésről lásd: Statikus kötet létrehozása az Azure Disks használatával.

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

Azure Disks PV-k dinamikus létrehozása a beépített tárolási osztályok használatával

A tárolóosztályok határozzák meg, 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.

Ha az Azure Disk CSI-illesztőprogramot használja az AKS-en, két további beépített StorageClasses eszköz is van, amelyek az Azure Disk CSI-tárolóillesztőt használják. A rendszer a többi CSI-tárolási osztályt a fürttel együtt hozza létre a fákon belüli alapértelmezett tárolási osztályok mellett.

  • managed-csi: Felügyelt lemez létrehozásához az Azure Standard SSD helyileg redundáns tárolót (LRS) használja. A Kubernetes 1.29-es verziójától kezdve a több rendelkezésre állási zónában üzembe helyezett Azure Kubernetes Service-fürtökben ez a tárolási osztály az Azure Standard SSD zónaredundáns tárolást (ZRS) használja felügyelt lemezek létrehozásához.
  • managed-csi-premium: Felügyelt lemez létrehozása az Azure Premium LRS használatával. A Kubernetes 1.29-es verziójától kezdve a több rendelkezésre állási zónában üzembe helyezett Azure Kubernetes Service-fürtökben ez a tárolási osztály az Azure Premium zónaredundáns tárolást (ZRS) használja felügyelt lemezek létrehozásához.

A mindkét tárolási osztály visszaigénylési szabályzata biztosítja, hogy az alapul szolgáló Azure Disk-lemezek törlődnek a megfelelő PV törlésekor. A tárolási osztályok a virtuális gépeket is bővíthetőre konfigurálják. Csak szerkesztenie kell az állandó mennyiségi jogcímet (PVC) az új mérettel.

Ezeknek a tárolási osztályoknak a használatához hozzon létre egy PVC-t és a megfelelő podot, amely hivatkozik és használja őket. A PVC használatával automatikusan kiépíteni a tárolót egy tárolási osztály alapján. A PVC az egyik előre létrehozott tárolási osztályt vagy felhasználó által definiált tárolási osztályt használhat egy Azure által felügyelt lemez létrehozásához a kívánt termékváltozathoz és mérethez. Poddefiníció létrehozásakor a PVC meg van adva a kívánt tároló kéréséhez.

Hozzon létre egy példa podot és a megfelelő PVC-t a kubectl apply parancs futtatásával:

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

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

persistentvolumeclaim/pvc-azuredisk created
pod/nginx-azuredisk created

Miután a pod futó állapotban van, futtassa a következő parancsot egy új, úgynevezett test.txtfájl létrehozásához.

kubectl exec nginx-azuredisk -- touch /mnt/azuredisk/test.txt

A lemez megfelelő csatlakoztatásának ellenőrzéséhez futtassa a következő parancsot, és ellenőrizze, hogy a fájl megjelenik-e test.txt a kimenetben:

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

lost+found
outfile
test.txt

Egyéni tárosztály létrehozása

Az alapértelmezett tárolási osztályok a leggyakoribb forgatókönyvekhez alkalmasak. 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 osztályt volumeBindingMode: Immediate , amely garantálja, hogy a PVC létrehozása után azonnal megtörténik. Ha a csomópontkészletek topológiája korlátozott, például rendelkezésre állási zónák használatakor a virtuális gépek a pod ütemezési követelményeinek ismerete nélkül lesznek megkötve vagy kiépítve.

Ennek a forgatókönyvnek a megoldásához használhatja volumeBindingMode: WaitForFirstConsumera PV kötését és kiépítését, amíg létre nem jön a PVC-t használó pod. Így a PV megfelel és ki van építve a pod ütemezési kényszerei által meghatározott 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 .

Hozzon létre egy nevű sc-azuredisk-csi-waitforfirstconsumer.yamlfájlt, majd illessze be a következő jegyzékfájlt. 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

Hozza létre a tárosztályt a kubectl apply parancs futtatásával, és adja meg a sc-azuredisk-csi-waitforfirstconsumer.yaml fájlt:

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

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

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

Mennyiségi pillanatképek

Az Azure Disk CSI-illesztőprogram 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 incremental paraméterben beállított értéktől függően (alapértelmezés szerint igaz).

Az alábbi táblázat az összes paraméter részleteit tartalmazza.

Név Értelmezés Elérhető érték 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 Disks
Növekményes Teljes vagy növekményes pillanatkép készítése true, false Nem true
címkét Azure Disks-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 Generált useragent formázva driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Adja meg az Azure-előfizetés azonosítóját, ahol létrejönnek az Azure Disks Azure-előfizetés azonosítója Nem Ha nem üres, resourceGroup meg kell adni, incremental be kell állítani false

Kötet pillanatképének létrehozása

Feljegyzés

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

Erre a képességre példaként hozzon létre egy mennyiségi pillanatkép-osztályt a kubectl apply paranccsal:

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

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

volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc created

Most hozzunk létre egy mennyiségi pillanatképet a PVC-ből, amelyet az oktatóanyag elején dinamikusan hoztunk létre. pvc-azuredisk

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

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

volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created

A pillanatkép helyes létrehozásának ellenőrzéséhez futtassa a következő parancsot:

kubectl describe volumesnapshot azuredisk-volume-snapshot

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

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:               dd953ab5-6c24-42d4-ad4a-f33180e0ef87
Spec:
  Source:
    Persistent Volume Claim Name:  pvc-azuredisk
  Volume Snapshot Class Name:      csi-azuredisk-vsc
Status:
  Bound Volume Snapshot Content Name:  snapcontent-dd953ab5-6c24-42d4-ad4a-f33180e0ef87
  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

Létrehozhat egy új PVC-t egy kötet pillanatképe alapján. Használja az előző lépésben létrehozott pillanatképet, és hozzon létre egy új PVC-t és egy új podot a felhasználáshoz.

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

persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
pod/nginx-restored created

Végül győződjön meg arról, hogy ugyanaz a PVC, amelyet korábban létrehozott. Ehhez ellenőrizze a tartalmat a következő parancs futtatásával:

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

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

lost+found
outfile
test.txt

A vártnak megfelelően továbbra is láthatjuk a korábban létrehozott test.txt fájlt.

Kötetek klónozása

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.

Az Azure Disks CSI-illesztőprogramja támogatja a kötet klónozását. A bemutatóhoz hozzon létre egy klónozott kötetet a korábban létrehozottazuredisk-pvc és egy új podot a felhasználáshoz.

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

persistentvolumeclaim/pvc-azuredisk-cloning created
pod/nginx-restored-cloning created

A klónozott kötet tartalmát az alábbi parancs futtatásával és a fájl test.txt létrehozásának megerősítésével ellenőrizheti:

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

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

lost+found
outfile
test.txt

Állandó kötet átméretezése állásidő nélkül

A PVC-hez nagyobb kötetet kérhet. Szerkessze a PVC-objektumot, és adjon meg nagyobb méretet. Ez a módosítás a PV-t háttérként szolgáló mögöttes kötet bővítését váltja ki.

Feljegyzés

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 beépített managed-csi tárolási osztály már támogatja a bővítést, ezért használja a korábban ezzel a tárolási osztálysal létrehozott PVC-t. A PVC 10 Gi állandó kötetet kért. Ezt a következő parancs futtatásával ellenőrizheti:

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

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

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

Bontsa ki a PVC-t a spec.resources.requests.storage következő parancsot futtató mező növelésével:

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

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

persistentvolumeclaim/pvc-azuredisk patched

Futtassa a következő parancsot a kötet méretének növeléséhez:

kubectl get pv

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

NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                                     STORAGECLASS   REASON   AGE
pvc-391ea1a6-0191-4022-b915-c8dc4216174a   15Gi       RWO            Delete           Bound    default/pvc-azuredisk                     managed-csi             2d2h
(...)

Néhány perc múlva futtassa a következő parancsokat a PVC méretének megerősítéséhez:

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    pvc-391ea1a6-0191-4022-b915-c8dc4216174a   15Gi       RWO            managed-csi    2d2h

Futtassa a következő parancsot a podon belüli lemez méretének megerősítéséhez:

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

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

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

Igény szerinti kipukkadás

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ást. Ez a modell további díjakat hoz létre, amikor a lemez kipukkan. Igény szerinti kipukkadás csak 512 GiB-nél nagyobb prémium SSD-k esetén érhető el. A prémium szintű 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ú kipukkadás az, ahol a lemez csak akkor törik fel, ha a kreditgyűjtőben felhalmozott kipukkanási kreditek vannak. A hitelalapú kipukkadás nem jár többletköltségekkel, ha a lemez kipukkan. A kreditalapú kipukkadás csak az 512 GiB és kisebb prémium SSD-k, valamint a standard 1024 GiB-s és kisebb SSD-k esetében érhető el. További információ az igény szerinti kipukkadásról: Igény szerinti kipukkadás.

Fontos

Az alapértelmezett managed-csi-premium tárolási osztály le van tiltva az igény szerinti kipukkadással, és hitelalapú kipukkadá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 igény szerinti kipukkadás engedélyezésével, létrehozhat egy új tárolási osztályt az enableBursting paraméterrel true az alábbi YAML-sablonban látható módon. További információ az igény szerinti kipukkadás engedélyezéséről: Igény szerinti kipukkadás. További információ a saját tárosztály igény szerinti kipukkadással történő létrehozásáról: Burstable Managed 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

Windows-tárolók

Az Azure Disk CSI-illesztőprogram támogatja a windowsos 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 a Windows-csomópontkészlet hozzáadásához.

Windows-csomópontkészlet használata után most már használhatja az olyan beépített tárolási osztályokat, mint a managed-csi. Az alábbi kubectl apply parancs futtatásával üzembe helyezhet egy Windows-alapú állapotalapú példát, amely időbélyegeket ment a fájlbadata.txt:

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

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

statefulset.apps/busybox-azuredisk created

A kötet tartalmának ellenőrzéséhez futtassa a következő parancsot:

kubectl exec -it busybox-azuredisk-0 -- cat c:\\mnt\\azuredisk\\data.txt # on Linux/MacOS Bash
kubectl exec -it busybox-azuredisk-0 -- cat c:\mnt\azuredisk\data.txt # on Windows Powershell/CMD

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

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

Következő lépések

  • Ha tudni szeretné, hogyan használhatja a CSI-illesztőprogramot az Azure Fileshoz, olvassa el az Azure Files használata a CSI-illesztőprogrammal című témakört.
  • Az Azure Blob Storage-hoz készült CSI-illesztőprogram használatáról az Azure Blob Storage használata a CSI-illesztőprogrammal című témakörben olvashat.
  • A tárolási ajánlott eljárásokkal kapcsolatos további információkért tekintse meg az Azure Kubernetes Service tárolási és biztonsági mentési ajánlott eljárásait.
  • A lemezalapú tárolási megoldásokkal kapcsolatos további információkért lásd : Lemezalapú megoldások az AKS-ben.