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_LRS
csak a gyorsítótárazási módot támogatjaNone
- Zónaredundáns tárolás (ZRS) lemeztámogatása
Premium_ZRS
lemeztípusokStandardSSD_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.txt
fá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: WaitForFirstConsumer
a 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.yaml
fá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övekvő | 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étrehozott azuredisk-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
Az állandó kötet jogcíméhez nagyobb kötetet kérhet. Szerkessze az állandó kötet jogcíme objektumot, és adjon meg egy nagyobb méretet. Ez a módosítás elindítja az állandó kötetet támogató mögöttes kötet kiterjesztését.
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.
Azure Kubernetes Service