Vytvoření a používání svazku s disky Azure v prostředí Azure Kubernetes Service (AKS)
Trvalý svazek představuje část úložiště zřízenou pro použití s pody Kubernetes. Trvalý svazek můžete použít s jedním nebo několika pody a můžete ho dynamicky nebo staticky zřídit. V tomto článku se dozvíte, jak dynamicky vytvářet trvalé svazky s disky Azure v clusteru Azure Kubernetes Service (AKS).
Poznámka:
Disk Azure je možné připojit pouze s typem accessového režimu ReadWriteOnce, který zpřístupňuje jeden uzel v AKS. Tento režim přístupu stále umožňuje více podům přistupovat ke svazku, když pody běží na stejném uzlu. Další informace najdete v tématu Režimy přístupu Kubernetes PersistentVolume.
V tomto článku se dozvíte, jak:
- Pracujte s dynamickým trvalým svazkem (PV) instalací ovladače Rozhraní úložiště kontejneru (CSI) a dynamickým vytvořením jednoho nebo více spravovaných disků Azure pro připojení k podu.
- Pracujte se statickou pv vytvořením jednoho nebo více spravovaných disků Azure nebo použijte existující disk a připojte ho k podu.
Další informace o svazcích Kubernetes najdete v tématu Možnosti úložiště pro aplikace v AKS.
Než začnete
Ujistěte se, že máte nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.Ovladač CSI disku Azure má limit svazků pro jednotlivé uzly. Počet svazků se změní na základě velikosti fondu uzlů nebo uzlů. Spuštěním příkazu kubectl get určete počet svazků, které je možné přidělit na uzel:
kubectl get CSINode <nodename> -o yaml
Pokud je limit svazku pro jednotlivé uzly pro vaši úlohu problém, zvažte použití služby Azure Container Storage pro trvalé svazky místo ovladačů CSI.
Dynamické zřizování svazku
Tato část obsahuje pokyny pro správce clusteru, kteří chtějí zřídit jeden nebo více trvalých svazků, které obsahují podrobnosti o úložišti Disků Azure pro použití úlohou. Deklarace identity trvalého svazku (PVC) používá objekt třídy úložiště k dynamickému zřízení kontejneru azure Disk Storage.
Parametry třídy úložiště pro dynamické trvalé svazky
Následující tabulka obsahuje parametry, které můžete použít k definování vlastní třídy úložiště pro persistentVolumeClaim.
Název | Význam | Dostupná hodnota | Povinný | Default value |
---|---|---|---|---|
skuName | Typ účtu úložiště Disků Azure (alias: storageAccountType ) |
Standard_LRS , Premium_LRS , StandardSSD_LRS , PremiumV2_LRS , UltraSSD_LRS , , Premium_ZRS StandardSSD_ZRS |
No | StandardSSD_LRS |
fsType | Typ systému souborů | ext4 , ext3 , ext2 , , btrfs xfs pro Linux, ntfs pro Windows |
No | ext4 pro Linux, ntfs pro Windows |
cachingMode | Nastavení mezipaměti hostitele Azure Data Disk (PremiumV2_LRS a UltraSSD_LRS podporují None pouze režim ukládání do mezipaměti) |
None , , ReadOnly ReadWrite |
No | ReadOnly |
resourceGroup | Určení skupiny prostředků pro disky Azure | Název existující skupiny prostředků | No | Pokud je prázdný, ovladač použije stejný název skupiny prostředků jako aktuální cluster AKS. |
DiskIOPSReadWrite | Disk UltraSSD nebo funkce IOPS ssd úrovně Premium v2 (minimálně 2 IOPS/GiB) | 100~160000 | No | 500 |
DiskMBpsReadWrite | Disk úrovně UltraSSD nebo propustnost ssd úrovně Premium v2 (minimálně: 0.032/GiB) | 1 ~2000 | No | 100 |
LogicalSectorSize | Velikost logického sektoru v bajtech disku úrovně Ultra. Podporované hodnoty jsou 512 ad 4096. Výchozí hodnota je 4096. | 512 , 4096 |
No | 4096 |
značky | Značky disků Azure | Formát značky: key1=val1,key2=val2 |
No | "" |
diskEncryptionSetID | ResourceId šifrování disku nastavené pro povolení šifrování neaktivních uložených dat | formát: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
No | "" |
diskEncryptionType | Typ šifrování sady šifrování disku | EncryptionAtRestWithCustomerKey (ve výchozím nastavení) EncryptionAtRestWithPlatformAndCustomerKeys |
No | "" |
writeAcceleratorEnabled | Akcelerátor zápisu na discích Azure | true , false |
No | "" |
networkAccessPolicy | Vlastnost NetworkAccessPolicy, která brání generování identifikátoru URI SAS pro disk nebo snímek | AllowAll , , DenyAll AllowPrivate |
No | AllowAll |
diskAccessID | ID prostředku Azure DiskAccess pro použití privátních koncových bodů na discích | No | `` | |
enableBursting | Povolte nárazové zvýšení na vyžádání nad rámec zřízeného cíle výkonu disku. Nárazové rozšíření na vyžádání by se mělo použít jenom na disk Premium a velikost disku > 512 GB. Disk úrovně Ultra a sdílený disk se nepodporují. Ve výchozím nastavení je shlukování zakázané. | true , false |
No | false |
useragent | Uživatelský agent používaný pro přisuzování využití zákazníka | No | Vygenerovaný uživatelský agent naformátovaný driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID | Zadejte ID předplatného Azure, ve kterém se vytvářejí disky Azure. | ID předplatného Azure | No | Pokud není prázdný, resourceGroup je nutné zadat. |
--- | Následující parametry jsou určené pouze pro verzi 2. | --- | --- | --- |
maxShares | Celkový počet připojení sdílených disků povolených pro disk. Nastavení hodnoty na 2 nebo více umožňuje repliky příloh. | Podporované hodnoty závisí na velikosti disku. Podporované hodnoty najdete v tématu Sdílení spravovaného disku Azure. | No | 0 |
maxMountReplicaCount | Počet příloh replik, které se mají zachovat. | Tato hodnota musí být v rozsahu. [0..(maxShares - 1)] |
No | Pokud accessMode je ReadWriteMany , výchozí hodnota je 0 . V opačném případě je výchozí hodnota maxShares - 1 |
Předdefinované třídy úložiště
Třídy úložiště definují, jak se dynamicky vytváří jednotka ú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.
Každý cluster AKS obsahuje čtyři předem připravené třídy úložiště, dvě z nich nakonfigurované pro práci s disky Azure:
- Výchozí třída úložiště zřídí disk Azure SSD úrovně Standard.
- Disky SSD úrovně Standard zálohují úložiště úrovně Standard a poskytují nákladově efektivní úložiště a přitom stále zajišťují spolehlivý výkon.
- Spravovaná třída úložiště csi-Premium zřídí disk Azure úrovně Premium.
- Disky SSD s vysokým výkonem a nízkou latencí zpět na disky Premium. Jsou ideální pro virtuální počítače s produkčními úlohami. Pokud v AKS používáte ovladač CSI disku Azure, můžete také použít
managed-csi
třídu úložiště, která je podporována místně redundantním úložištěm SSD úrovně Standard (LRS).
- Disky SSD s vysokým výkonem a nízkou latencí zpět na disky Premium. Jsou ideální pro virtuální počítače s produkčními úlohami. Pokud v AKS používáte ovladač CSI disku Azure, můžete také použít
- Počínaje Kubernetes verze 1.29 platí, že když nasadíte clustery Azure Kubernetes Service (AKS) napříč několika zónami dostupnosti, AKS teď využívá zónově redundantní úložiště (ZRS) k vytváření spravovaných disků v rámci integrovaných tříd úložiště.
- ZRS zajišťuje synchronní replikaci spravovaných disků Azure napříč několika zónami dostupnosti Azure ve zvolené oblasti. Tato strategie redundance zvyšuje odolnost vašich aplikací a chrání vaše data před selháními datacentra.
- Je ale důležité si uvědomit, že zónově redundantní úložiště (ZRS) má oproti místně redundantnímu úložišti (LRS) vyšší náklady. Pokud je optimalizace nákladů prioritou, můžete vytvořit novou třídu úložiště s parametrem názvu skladové položky LRS a použít ji v trvalé deklaraci identity svazku.
Zmenšení velikosti PVC není podporováno kvůli riziku ztráty dat. Existující třídu úložiště můžete upravit pomocí kubectl edit sc
příkazu nebo můžete vytvořit vlastní třídu úložiště. Pokud například chcete použít disk s velikostí 4 TiB, musíte vytvořit třídu úložiště, která definuje cachingmode: None
, že ukládání do mezipaměti disku není podporováno pro disky 4 TiB a větší. Další informace o třídách úložiště a vytvoření vlastní třídy úložiště najdete v tématu Možnosti úložiště pro aplikace v AKS.
Předem připravené třídy úložiště můžete zobrazit pomocí kubectl get sc
příkazu. Následující příklad ukazuje předem připravené třídy úložiště dostupné v clusteru AKS:
kubectl get sc
Výstup příkazu se podobá následujícímu příkladu:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
Poznámka:
Deklarace identity trvalých svazků jsou zadané v GiB, ale spravované disky Azure se účtují podle skladové položky za konkrétní velikost. Tyto skladové položky jsou od 32GiB pro disky S4 nebo P4 až po 32TiB pro disky S80 nebo P80 (ve verzi Preview). Výkon propustnosti a vstupně-výstupních operací za sekundu spravovaného disku Úrovně Premium závisí na SKU i velikosti instance uzlů v clusteru AKS. Další informace najdete v tématu Ceny a výkon spravovaných disků.
Vytvoření deklarace trvalého svazku
Deklarace trvalého svazku automaticky zřizuje úložiště na základě třídy úložiště. V tomto případě může PVC použít jednu z předem vytvořených tříd úložiště k vytvoření standardního nebo prémiového spravovaného disku Azure.
Vytvořte soubor s názvem
azure-pvc.yaml
a zkopírujte ho v následujícím manifestu. Deklarace identity požaduje disk s názvemazure-managed-disk
o velikosti 5 GB s přístupem ReadWriteOnce . Třída úložiště managed-csi je určena jako třída úložiště.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5Gi
Tip
Pokud chcete vytvořit disk, který používá službu Premium Storage, použijte storageClassName: managed-csi-premium
místo spravované csi.
Vytvořte deklaraci identity trvalého svazku
kubectl apply
pomocí příkazu a zadejte soubor azure-pvc.yaml .kubectl apply -f azure-pvc.yaml
Výstup příkazu se podobá následujícímu příkladu:
persistentvolumeclaim/azure-managed-disk created
Použití trvalého svazku
Po vytvoření trvalé deklarace identity svazku je nutné ověřit, že má stav Pending
. Stav Pending
označuje, že je připravený k použití podem.
Pomocí příkazu ověřte stav PVC
kubectl describe pvc
.kubectl describe pvc azure-managed-disk
Výstup příkazu vypadá podobně jako v následujícím zhuštěném příkladu:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
Vytvořte soubor s názvem
azure-pvc-disk.yaml
a zkopírujte ho v následujícím manifestu. Tento manifest vytvoří základní pod NGINX, který pomocí deklarace identity trvalého svazku s názvem azure-managed-disk připojí disk Azure k cestě/mnt/azure
. Pro kontejnery Windows Serveru zadejte cestu mountPath pomocí konvence cesty systému Windows, například 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
Vytvořte pod pomocí
kubectl apply
příkazu.kubectl apply -f azure-pvc-disk.yaml
Výstup příkazu se podobá následujícímu příkladu:
pod/mypod created
Teď máte spuštěný pod s připojeným diskem Azure v
/mnt/azure
adresáři. Pomocí příkazu zkontrolujte konfiguraci podukubectl describe
.kubectl describe pod mypod
Výstup příkazu se podobá následujícímu příkladu:
[...] 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" [...]
Použití disků Azure úrovně Ultra
Pokud chcete použít disk Úrovně Ultra Azure, přečtěte si téma Použití disků úrovně Ultra ve službě Azure Kubernetes Service (AKS).
Použití značek Azure
Další informace o používání značek Azure najdete v tématu Použití značek Azure ve službě Azure Kubernetes Service (AKS).
Statické zřízení svazku
Tato část obsahuje pokyny pro správce clusteru, kteří chtějí vytvořit jeden nebo více trvalých svazků, které obsahují podrobnosti o discích Azure pro použití úlohou.
Statické parametry zřizování pro trvalý svazek
Následující tabulka obsahuje parametry, které můžete použít k definování trvalého svazku.
Název | Význam | Dostupná hodnota | Povinný | Default value |
---|---|---|---|---|
volumeHandle | Identifikátor URI disku Azure | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Yes | – |
volumeAttributes.fsType | Typ systému souborů | ext4 , ext3 , ext2 , , btrfs xfs pro Linux, ntfs pro Windows |
No | ext4 pro Linux, ntfs pro Windows |
volumeAttributes.partition | Počet oddílů existujícího disku (podporuje se jenom v Linuxu) | 1 , , 2 3 |
No | Prázdné (bez oddílu) – ujistěte se, že je formát oddílu podobný. -part1 |
volumeAttributes.cachingMode | Nastavení mezipaměti hostitele disku | None , , ReadOnly ReadWrite |
No | ReadOnly |
Vytvoření disku Azure
Když vytvoříte disk Azure pro použití s AKS, můžete prostředek disku vytvořit ve skupině prostředků uzlu . Tento přístup umožňuje clusteru AKS přístup k prostředku disku a jeho správě. Pokud místo toho vytvoříte disk v samostatné skupině prostředků, musíte udělit spravované identitě Azure Kubernetes Service (AKS) pro váš cluster Contributor
roli skupině prostředků disku.
Pomocí příkazu identifikujte název
az aks show
skupiny prostředků a přidejte--query nodeResourceGroup
parametr.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
Výstup příkazu se podobá následujícímu příkladu:
MC_myResourceGroup_myAKSCluster_eastus
Vytvořte disk pomocí
az disk create
příkazu. Zadejte název skupiny prostředků uzlu a název prostředku disku, například myAKSDisk. Následující příklad vytvoří disk 20GiB a po vytvoření vypíše ID disku. Pokud potřebujete vytvořit disk pro použití s kontejnery Windows Serveru, přidejte--os-type windows
parametr pro správné formátování disku.az disk create \ --resource-group MC_myResourceGroup_myAKSCluster_eastus \ --name myAKSDisk \ --size-gb 20 \ --query id --output tsv
Poznámka:
Disky Azure se účtují podle skladové položky za konkrétní velikost. Tyto skladové položky jsou od 32GiB pro disky S4 nebo P4 až po 32TiB pro disky S80 nebo P80 (ve verzi Preview). Výkon propustnosti a IOPS spravovaného disku Úrovně Premium závisí na skladové posílce i velikosti instancí uzlů v clusteru AKS. Viz ceny a výkon Spravované disky.
ID prostředku disku se zobrazí po úspěšném dokončení příkazu, jak je znázorněno v následujícím příkladu výstupu. ID disku použijete k připojení disku v další části.
/subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
Připojení disku jako svazku
Vytvořte soubor pv-azuredisk.yaml s trvalým souboremVolume. Aktualizujte
volumeHandle
ID prostředku disku z předchozího kroku. Pro kontejnery Windows Serveru zadejte pro parametr fsType ntfs.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
Vytvořte soubor pvc-azuredisk.yaml s TrvalýVolumeClaim , který používá PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
Pomocí příkazu vytvořte PersistentVolume a PersistentVolumeClaim
kubectl apply
a odkazujte na dva soubory YAML, které jste vytvořili.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
Pomocí příkazu ověřte, že je váš PersistentVolumeClaim vytvořený a svázaný s TrvalýVolume
kubectl get 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 pv-azuredisk 20Gi RWO 5s
Vytvořte soubor azure-disk-pod.yaml , který bude odkazovat na soubor PersistentVolumeClaim. Pro kontejnery Windows Serveru zadejte cestu mountPath pomocí konvence cesty systému Windows, například 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
Použijte konfiguraci a připojte svazek pomocí
kubectl apply
příkazu.kubectl apply -f azure-disk-pod.yaml
Vyčištění prostředků
Až budete s prostředky vytvořenými v tomto článku hotovi, můžete je pomocí kubectl delete
příkazu odebrat.
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
Další kroky
- Informace o použití ovladače CSI pro úložiště disků Azure najdete v tématu Použití úložiště disků Azure s ovladačem CSI.
- Přidružené osvědčené postupy najdete v tématu Osvědčené postupy pro ukládání a zálohování v AKS.
Azure Kubernetes Service