Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovladač rozhraní CSI (Azure Disks Container Storage Interface) je ovladač kompatibilní se specifikací CSI používaný službou Azure Kubernetes Service (AKS) ke správě životního cyklu disku Azure.
CsI je standard pro zveřejnění libovolných systémů blokového a souborového úložiště pro kontejnerizované úlohy v Kubernetes. Díky přijetí a používání CSI teď může AKS psát, nasazovat a iterovat moduly plug-in, aby zpřístupnil nové nebo vylepšené existující systémy úložiště v Kubernetes. Použití ovladačů CSI v AKS vám umožní vyhnout se nutnosti zasahování do základního kódu Kubernetes a čekání na jeho cykly vydávání.
Pokud chcete vytvořit cluster AKS s podporou ovladačů CSI, přečtěte si téma Povolení ovladače CSI v AKS. Tento článek popisuje, jak používat ovladač CSI disku Azure.
Poznámka:
Ovladače ve stromu odkazují na aktuální ovladače úložiště, které jsou součástí základního kódu Kubernetes a nové ovladače CSI, které jsou moduly plug-in.
Funkce ovladače CSI disku Azure
Kromě funkcí ovladače stromu podporuje ovladač CSI disku Azure následující funkce:
- Vylepšení výkonu během souběžného připojení a odpojení disku
- Ovladače ve stromové struktuře připojují nebo odpojují disky sériově, zatímco ovladače CSI připojují nebo odpojují disky hromadně. Pokud se k jednomu uzlu připojuje více disků, výrazně se zlepší.
- Podporují se ssd úrovně Premium v1 a v2.
-
PremiumV2_LRS
podporujeNone
pouze režim ukládání do mezipaměti.
-
- Podpora zónově redundantního úložiště (ZRS)
-
Premium_ZRS
,StandardSSD_ZRS
podporují se typy disků. Disk ZRS může být naplánovaný na uzlu zóny nebo mimo zónu bez omezení, že by měl být svazek disku umístěný ve stejné zóně jako daný uzel. Další informace, včetně podporovaných oblastí, najdete v tématu Zónově redundantní úložiště pro spravované disky.
-
- Snímek
- Klon svazku
- Změna velikosti diskového PV bez výpadků
Poznámka:
V závislosti na SKU použitého virtuálního počítače může mít ovladač CSI disku Azure omezení počtu svazků na uzel. U některých výkonných virtuálních počítačů (například 16 jader) je limit 64 svazků na uzel. Pokud chcete zjistit limit na skladovou položku virtuálního počítače, projděte si sloupec Maximální počet datových disků pro každou nabízenou skladovou položku virtuálního počítače. Seznam nabízených skladových položek virtuálních počítačů a jejich odpovídajících podrobných limitů kapacity najdete v tématu Velikosti virtuálních počítačů pro obecné účely.
Používejte trvalé svazky CSI s disky Azure
Trvalý svazek (PV) představuje část úložiště určenou k použití s Kubernetes pods. PV může používat jeden nebo více podů a může být dynamicky nebo staticky zřízen. V tomto článku se dozvíte, jak dynamicky vytvářet počítače s diskem Azure pro použití jedním podem v clusteru AKS. Informace o statickém zřizování najdete v tématu Vytvoření statického svazku s disky Azure.
Další informace o svazcích Kubernetes najdete v tématu Možnosti úložiště pro aplikace v AKS.
Dynamické vytváření virtuálních počítačů s disky Azure pomocí integrovaných tříd úložiště
Třída úložiště slouží k definování dynamického vytvoření jednotky ú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.
Pokud v AKS použijete ovladač CSI disku Azure, existují další dva integrované StorageClasses
ovladače úložiště Azure Disk CSI. Ostatní třídy úložiště CSI se vytvářejí souběžně s clusterem a integrovanými výchozími třídami úložiště.
-
managed-csi
: K vytvoření spravovaného disku se používá místně redundantní úložiště SSD úrovně Azure Standard (LRS). S účinností od verze Kubernetes 1.29, v clusterech služby Azure Kubernetes Service (AKS) nasazených napříč několika zónami dostupnosti, tato třída úložiště využívá úložiště Azure Standard SSD zónově redundantní (ZRS) k vytváření spravovaných disků. -
managed-csi-premium
: Používá Azure Premium LRS k vytvoření spravovaného disku. Efektivní od Kubernetes verze 1.29 v clusterech Azure Kubernetes Service (AKS) nasazených napříč několika zónami dostupnosti využívá tato třída úložiště azure Premium zónově redundantní úložiště (ZRS) k vytváření spravovaných disků.
Zásady uvolnění paměti v obou třídách úložiště zajišťují, že se základní disky Azure odstraní při odstranění příslušné pv. Třídy úložiště také konfigurují virtuální počítače tak, aby se rozšiřily. Stačí upravit perzistentní požadavek na svazek (PVC) s novou velikostí.
Chcete-li tyto třídy úložiště použít, vytvořte PVC a odpovídající pod, který na ně odkazuje a využívá je. PVC se používá k automatickému zřizování úložiště na základě třídy úložiště. PVC může použít jednu z předem vytvořených tříd úložiště nebo uživatelem definovanou třídu úložiště k vytvoření disku spravovaného v Azure pro požadovanou skladovou položku a velikost. Při vytváření definice podu je PVC specifikován k vyžádání požadovaného úložiště.
Spuštěním příkazu kubectl apply vytvořte ukázkový pod a odpovídající PVC:
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
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/pvc-azuredisk created
pod/nginx-azuredisk created
Jakmile je pod ve spuštěném stavu, spuštěním následujícího příkazu vytvořte nový soubor s názvem test.txt
.
kubectl exec nginx-azuredisk -- touch /mnt/azuredisk/test.txt
Pokud chcete ověřit, že je disk správně připojený, spusťte následující příkaz a ověřte, že se ve výstupu zobrazí test.txt
soubor:
kubectl exec nginx-azuredisk -- ls /mnt/azuredisk
lost+found
outfile
test.txt
Vytvoření vlastní třídy úložiště
Výchozí třídy úložiště jsou vhodné pro nejběžnější scénáře. V některých případech můžete chtít mít vlastní třídu úložiště přizpůsobenou vlastními parametry. Můžete například chtít změnit volumeBindingMode
třídu.
Můžete použít volumeBindingMode: Immediate
třídu, která zaručuje, že dojde okamžitě po vytvoření PVC. Pokud jsou fondy uzlů omezené topologií, například při použití zón dostupnosti, budou virtuální počítače vázané nebo zřízené bez znalosti požadavků na plánování podu.
Chcete-li tento scénář vyřešit, můžete použít volumeBindingMode: WaitForFirstConsumer
, což zpožďuje vazbu a zřizování PV, dokud pod, který používá PVC je vytvořen. Tímto způsobem je pv v souladu se zónou dostupnosti (nebo jinou topologií), která je určená omezeními plánování podu. Výchozí třídy úložiště používají volumeBindingMode: WaitForFirstConsumer
třídu.
Vytvořte soubor s názvem sc-azuredisk-csi-waitforfirstconsumer.yaml
a vložte následující manifest. Třída úložiště je stejná jako naše managed-csi
třída úložiště, ale s jinou volumeBindingMode
třídou.
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
Vytvořte třídu úložiště spuštěním příkazu kubectl apply a zadejte váš sc-azuredisk-csi-waitforfirstconsumer.yaml
soubor:
kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yaml
Výstup příkazu se podobá následujícímu příkladu:
storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
Snímky svazků
Ovladač CSI disku Azure podporuje vytváření snímků trvalých svazků. V rámci této funkce může ovladač provádět úplné nebo přírůstkové snímky v závislosti na hodnotě nastavené v parametru incremental
(ve výchozím nastavení je to pravda).
Následující tabulka obsahuje podrobnosti o všech parametrech.
Název | Význam | Dostupná hodnota | Povinný | Výchozí hodnota |
---|---|---|---|---|
skupina zdrojů | Skupina prostředků pro ukládání snímků | EXISTUJÍCÍ SKUPINA PROSTŘEDKŮ | Ne | Pokud není zadaný, snímek se uloží ve stejné skupině prostředků jako zdrojové disky Azure. |
inkrementální | Pořízení úplného nebo přírůstkového snímku |
true , false |
Ne | true |
značky | Značky disků Azure | Formát značky: 'key1=val1,key2=val2' | Ne | "" |
uživatelský agent | Uživatelský agent používaný pro přisuzování využití zákazníka | Ne | Vygenerovaný uživatelský agent naformátovaný driverName/driverVersion compiler/version (OS-ARCH) |
|
identifikátor předplatného | Zadejte ID předplatného Azure, ve kterém se vytvoří disky Azure. | ID předplatného Azure | Ne | Pokud není prázdný, resourceGroup musí být zadaný, incremental musí být nastaven jako false |
Vytvořte snímek svazku
Poznámka:
Než budete pokračovat, ujistěte se, že aplikace nezapisuje data na zdrojový disk.
V příkladu této funkce vytvořte třídu snímku svazku pomocí příkazu kubectl apply :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/storageclass-azuredisk-snapshot.yaml
Výstup příkazu se podobá následujícímu příkladu:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc created
Nyní vytvoříme snímek svazku z PVC, který jsme dynamicky vytvořili na začátku tohoto tutoriálu, pvc-azuredisk
.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yaml
Výstup příkazu se podobá následujícímu příkladu:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
Pokud chcete ověřit, že se snímek vytvořil správně, spusťte následující příkaz:
kubectl describe volumesnapshot azuredisk-volume-snapshot
Výstup příkazu se podobá následujícímu příkladu:
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>
Vytvoření nového PVC založeného na snímku svazku
Nový PVC můžete vytvořit na základě snímku svazku. Použijte snímek vytvořený v předchozím kroku a vytvořte nový PVC a nový pod , který ho použije.
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
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
pod/nginx-restored created
Nakonec se ujistíme, že se jedná o stejné PVC, které bylo vytvořeno dříve, tak, že zkontrolujeme obsah spuštěním následujícího příkazu:
kubectl exec nginx-restored -- ls /mnt/azuredisk
Výstup příkazu se podobá následujícímu příkladu:
lost+found
outfile
test.txt
Podle očekávání stále vidíme náš dříve vytvořený test.txt
soubor.
Klonování svazků
Klonovaný svazek se definuje jako duplikát existujícího svazku Kubernetes. Další informace o klonování svazků v Kubernetes najdete v koncepční dokumentaci ke klonování svazků.
Ovladač CSI pro disky Azure podporuje klonování svazků. Abyste to demonstrovali, vytvořte naklonovaný svazek z dříve vytvořenéhoazuredisk-pvc
, a nový pod, který jej bude využívat.
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
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/pvc-azuredisk-cloning created
pod/nginx-restored-cloning created
Obsah klonovaného svazku můžete ověřit spuštěním následujícího příkazu a potvrzením vytvoření souboru test.txt
:
kubectl exec nginx-restored-cloning -- ls /mnt/azuredisk
Výstup příkazu se podobá následujícímu příkladu:
lost+found
outfile
test.txt
Změna velikosti trvalého svazku bez výpadků
Můžete požádat o větší objem pro PVC. Upravte objekt PVC a zadejte větší velikost. Tato změna aktivuje rozšíření podkladového svazku, který zálohuje trvalý svazek.
Poznámka:
Nová hodnota PV se nikdy nevytvořila k uspokojení deklarace identity. Místo toho se změní velikost existujícího svazku.
V AKS integrovaná managed-csi
třída úložiště již podporuje rozšíření, takže použijte PVC vytvořené dříve s touto třídou úložiště. PVC požádal o trvalý datový svazek o velikosti 10 GiB. Můžete to ověřit spuštěním následujícího příkazu:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
Výstup příkazu se podobá následujícímu příkladu:
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 9.8G 42M 9.8G 1% /mnt/azuredisk
Rozšiřte PVC zvýšením pole spec.resources.requests.storage
spuštěním následujícího příkazu:
kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'
Poznámka:
Zmenšování trvalých svazků se v současné době nepodporuje. Pokus o opravu existujícího PVC s menší velikostí, než je aktuální, vede k následující chybové zprávě: The persistentVolumeClaim "pvc-azuredisk" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value.
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/pvc-azuredisk patched
Spuštěním následujícího příkazu potvrďte, že došlo ke zvýšení velikosti svazku:
kubectl get pv
Výstup příkazu se podobá následujícímu příkladu:
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
(...)
A po několika minutách spusťte následující příkazy, abyste potvrdili velikost 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 pvc-391ea1a6-0191-4022-b915-c8dc4216174a 15Gi RWO managed-csi 2d2h
Spuštěním následujícího příkazu potvrďte velikost disku uvnitř podu:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
Výstup příkazu se podobá následujícímu příkladu:
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 15G 46M 15G 1% /mnt/azuredisk
Dynamické škálování na vyžádání
Model nárazového nárůstu disku na vyžádání umožňuje nárůsty disku vždy, když její potřeby překročí aktuální kapacitu. Tento model generuje další poplatky, kdykoli se disk rozsákne. Na vyžádání dočasné zvýšení výkonu je k dispozici pouze pro datové úložiště SSD úrovně Premium větší než 512 GiB. Další informace o zřízených IOPS a propustnosti prémiových SSD na disk viz Velikost prémiového SSD. Alternativně, kreditově založené burstování probíhá pouze tehdy, když má disk v rámci svého kreditového fondu nahromaděné burstové kredity. Kreditově založené navýšení výkonu disku negeneruje žádné další poplatky. Kreditové překročení kapacity je dostupné pouze pro SSD disky Premium o velikosti 512 GiB a menší a SSD disky Standard o velikosti 1024 GiB a menší. Další informace o funkci "on-demand bursting" najdete v tématu On-demand bursting.
Důležité
Výchozí úložná třída managed-csi-premium
má zakázané burstování na vyžádání a využívá burstování založené na kreditech. Všechny SSD úrovně Premium, které jsou dynamicky vytvořeny na základě trvalého požadavku na svazek, založené na výchozí managed-csi-premium
třídě úložiště, mají také zakázáno průběžné zvyšování výkonu na vyžádání.
Pokud chcete vytvořit trvalý svazek SSD úrovně Premium s povoleným nárůstem na vyžádání, můžete vytvořit novou třídu úložiště s parametrem enableBursting nastaveným na true
, jak je znázorněno v následující šabloně YAML. Další informace o povolení režimu automatického navýšení výkonu na vyžádání najdete v tématu Automatické navýšení výkonu na vyžádání. Další informace o vytvoření vlastní třídy úložiště s povoleným nárazovým nárůstem na vyžádání najdete v tématu Vytvoření škálovatelné spravované třídy CSI Premium Storage.
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
Kontejnery Windows
Ovladač CSI disku Azure podporuje uzly a kontejnery Windows. Pokud chcete použít kontejnery Windows, postupujte podle rychlého startu pro kontejnery Windows a přidejte fond uzlů Windows.
Jakmile máte fond uzlů Windows, můžete nyní použít předdefinované třídy úložiště, jako je managed-csi
. Můžete nasadit ukázkovou stavovou sadu založenou na Windows, která ukládá časová razítka do souboru data.txt
spuštěním následujícího příkazu kubectl apply :
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yaml
Výstup příkazu se podobá následujícímu příkladu:
statefulset.apps/busybox-azuredisk created
Pokud chcete ověřit obsah svazku, spusťte následující příkaz:
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
Výstup příkazu se podobá následujícímu příkladu:
2020-08-27 08:13:41Z
2020-08-27 08:13:42Z
2020-08-27 08:13:44Z
(...)
Další kroky
- Informace o použití ovladače CSI pro službu Soubory Azure najdete v tématu Použití služby Soubory Azure s ovladačem CSI.
- Informace o použití ovladače CSI pro úložiště objektů blob v Azure najdete v tématu Použití služby Azure Blob Storage s ovladačem CSI.
- Další informace o osvědčených postupech úložiště najdete v tématu Osvědčené postupy pro ukládání a zálohování ve službě Azure Kubernetes Service.
- Další informace o řešeních úložiště založeném na discích najdete v tématu Řešení založená na discích v AKS.
Azure Kubernetes Service