Az Azure Disk Container Storage Interface (CSI) illesztőprogram használata a Azure Kubernetes Service (AKS) szolgáltatásban
Az Azure Disks Container Storage Interface (CSI) illesztőprogram egy CSI specifikációnak megfelelő illesztőprogram, amelyet a Azure Kubernetes Service (AKS) használ az Azure Disk életciklusának kezeléséhez.
A CSI egy standard, amely tetszőleges blokk- és fájlrendszereket tárhat fel tárolóalapú számítási feladatok számára a Kubernetesen. 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. Ha CSI-illesztőprogramokat használ az AKS-ben, nem kell megérintenie a kubernetes-kódot, és várnia kell a kiadási ciklusokra.
A CSI-illesztő támogatásával rendelkező AKS-fürt létrehozásához lásd: CSI-illesztőprogram engedélyezése az AKS-ben. Ez a cikk az Azure Disk CSI-illesztőprogram 1-es verziójának használatát ismerteti.
Megjegyzé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 több fürtcsomóponton való kiépítéséhez, és integrálható a podütemezővel annak érdekében, hogy a pod feladatátvételekor egy mellékletreplikát tartalmazó csomópont legyen kiválasztva. Az Azure Disk CSI driver v2 (előzetes verzió) a teljesítmény finomhangolását is lehetővé teszi. 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ásiszint-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.
Megjegyzés
A fán belüli illesztőprogramok a kubernetes-kód részét képező aktuális tárolóillesztőkre utalnak, 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 a lemezek egyidejű csatlakoztatá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_LRS
csak a gyorsítótárazási módot támogatjaNone
- Zónaredundáns tárolás (ZRS) lemeztámogatása
Premium_ZRS
,StandardSSD_ZRS
a lemeztípusok támogatottak. A ZRS-lemez ütemezhető a zónán vagy a nem zónacsomóponton anélkül, hogy a lemezkötetnek ugyanabban a zónában kellene lennie, mint egy adott csomópontnak. További információ, beleértve a támogatott régiókat is, lásd: Zónaredundáns tárolás felügyelt lemezekhez.
- Pillanatkép
- Kötet klónozása
- Lemez MÉ-ének átméretezése állásidő nélkül
Megjegyzés
A használt virtuálisgép-termékváltozattól függően előfordulhat, hogy az Azure Disk CSI-illesztő csomópontonkénti kötetkorlátot használ. 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 a hozzájuk tartozó részletes kapacitáskorlátokat lásd: Általános célú virtuálisgép-méretek.
ÁLLANDÓ CSI-kötetek használata Azure Disks használatával
Az állandó kötet (PV) egy kubernetes-podokkal való használatra kiosztott tárterületet jelöl. A PV-t egy vagy több pod is használhatja, és dinamikusan vagy statikusan kiosztható. Ez a cikk bemutatja, hogyan hozhat létre dinamikusan PV-ket azure-lemezzel, amelyeket egyetlen pod használhat egy AKS-fürtben. A statikus kiépítéssel kapcsolatban 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 lásd: Tárolási lehetőségek alkalmazásokhoz az AKS-ben.
Azure Disks PV-k dinamikus létrehozása a beépített tárolóosztályok használatával
A tárolási osztály határozza meg, hogyan jön létre dinamikusan egy tárolóegység egy állandó kötettel. A Kubernetes-tárolóosztályokkal kapcsolatos további információkért lásd: Kubernetes-tárolóosztályok.
Ha az Azure Disk CSI-illesztőprogramot használja az AKS-en StorageClasses
, két további beépített eszköz is használható az Azure Disk CSI-tárolóillesztővel. A többi CSI-tárolóosztály a fürttel együtt jön létre a fán belüli alapértelmezett tárolási osztályokkal együtt.
managed-csi
: Az Azure Standard SSD helyileg redundáns tárolást (LRS) használja egy felügyelt lemez létrehozásához.managed-csi-premium
: Az Azure Premium LRS használatával hoz létre egy felügyelt lemezt.
A visszaigénylési szabályzat mindkét tárolási osztályban biztosítja, hogy a mögöttes Azure-lemezek törlődnek a megfelelő PV törlésekor. A tárolóosztályok a virtuális gépek bővíthetőségét is konfigurálják. Csak szerkesztenie kell az állandó kötetjogcí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 rájuk, és használja őket. A PVC-t a tárolóosztályon alapuló tárolás automatikus kiépítésére használják. A PVC az egyik előre létrehozott tárolóosztályt vagy felhasználó által definiált tárolóosztályt használhatja 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ó igénylé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ó:
persistentvolumeclaim/pvc-azuredisk created
pod/nginx-azuredisk created
Miután a pod futó állapotban van, futtassa a következő parancsot egy nevű új fájl test.txt
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árolóosztály létrehozása
Az alapértelmezett tárolási osztályok a leggyakoribb forgatókönyvekhez használhatók. Bizonyos esetekben előfordulhat, hogy saját tárolóosztályt szeretne testre szabni 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 bekövetkezik. 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.
A forgatókönyv megoldásához használhatja volumeBindingMode: WaitForFirstConsumer
a parancsot, amely késlelteti a PV kötését és kiépítését, amíg létre nem jön egy POD, amely a PVC-t használja. Í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ű fájlt sc-azuredisk-csi-waitforfirstconsumer.yaml
, 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 storage osztá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ó:
storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
Kötetpillanatképek
Az Azure Disk CSI-illesztő 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 ez igaz).
Az alábbi táblázat az összes paraméter részleteit tartalmazza.
Name | É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 |
tags | 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 az Azure Disks létrejön | Azure-előfizetés azonosítója | Nem | Ha nem üres, resourceGroup meg kell adni, incremental meg kell adni false |
Kötet pillanatképének létrehozása
Megjegyzé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 kötet-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 dinamikusan hoztunk létre az oktatóanyag elején. 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 kötet-pillanatkép alapján
Létrehozhat egy új PVC-t a 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 ellenőrizze, hogy ugyanaz a PVC-e, 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áltjaké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 fogalmi 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 egy nagyobb méretet. Ez a módosítás elindítja a mögöttes kötet kiterjesztését, amely a PV-t háttérbe iktatja.
Megjegyzé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"}}}}'
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 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ását. Ez a modell további díjakat hoz létre, amikor a lemez kipukkan. Az igény szerinti adatcsomózás csak az 512 GiB-nél nagyobb prémium SSD-khez érhető el. A prémium szintű SSD-k által kiépített IOPS-ról és a lemezenkénti átviteli sebességről a Prémium SSD-méret című témakörben olvashat bővebben. Másik lehetőségként a kreditalapú kipukkadás az, ahol a lemez csak akkor törik fel, ha a kreditgyűjtőben felgyülemlett kreditek vannak. A hitelalapú kipukkadás nem hoz létre többletköltségeket a lemez felszakadásakor. A hitelalapú 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 adatkitörésről: Igény szerinti felszakadás.
Fontos
Az alapértelmezett managed-csi-premium
tárolási osztály le van tiltva az igény szerinti adatkitöréssel, és hitelalapú adatkitörést használ. Az alapértelmezett managed-csi-premium
tárolási osztályon alapuló állandó kötetjogcímek által dinamikusan létrehozott prémium SSD-k igény szerinti adatcsomózást is letiltanak.
Ha egy prémium szintű SSD-állandó kötetet szeretne létrehozni, amelyen engedélyezve van az igény szerinti kipukkadás , létrehozhat egy új tárosztályt az enableBursting paraméterrel true
, az alábbi YAML-sablonban látható módon. Az igény szerinti adatcsomózás engedélyezésével kapcsolatos további információkért lásd: Igény szerinti adatkitörés. A saját tárosztály igény szerinti kipukkadással történő létrehozásával kapcsolatos további információkért lásd: 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óját egy Windows-csomópontkészlet hozzáadásához.
Windows-csomópontkészlet használata után mostantól 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 példa Windows-alapú állapotalapú készletet, 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 meg szeretné tudni, hogyan használhatja a CSI-illesztőt a Azure Files, olvassa el a Azure Files használata a CSI-illesztővel 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 CSI-illesztővel című témakörben olvashat.
- A tárolási ajánlott eljárásokkal kapcsolatos további információkért lásd: Ajánlott eljárások a tároláshoz és a biztonsági mentésekhez a Azure Kubernetes Service.
- A lemezalapú tárolási megoldásokkal kapcsolatos további információkért lásd: Lemezalapú megoldások az AKS-ben.