Použití služby Azure Container Storage se spravovanými disky Azure
Azure Container Storage je cloudová služba pro správu svazků, nasazení a orchestraci sestavená nativně pro kontejnery. V tomto článku se dozvíte, jak nakonfigurovat Službu Azure Container Storage tak, aby používala spravované disky Azure jako back-endové úložiště pro úlohy Kubernetes. Na konci budete mít pod, který jako úložiště používá spravované disky Azure.
Požadavky
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Tento článek vyžaduje nejnovější verzi Azure CLI (2.35.0 nebo novější). Přečtěte si , jak nainstalovat Azure CLI. Pokud používáte prostředí Bash v Azure Cloud Shellu, je už nainstalovaná nejnovější verze. Pokud chcete příkazy spouštět místně místo v Azure Cloud Shellu, nezapomeňte je spustit s oprávněními správce. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Budete potřebovat klienta
kubectl
příkazového řádku Kubernetes. Je už nainstalovaný, pokud používáte Azure Cloud Shell, nebo ho můžete nainstalovat místně spuštěnímaz aks install-cli
příkazu.Pokud jste ještě službu Azure Container Storage nenainstalovali, postupujte podle pokynů v tématu Použití služby Azure Container Storage se službou Azure Kubernetes Service.
Zkontrolujte, jestli je vaše cílová oblast podporovaná v oblastech Azure Container Storage.
- Pokud chcete používat Azure Container Storage se spravovanými disky Azure, cluster AKS musí mít fond uzlů alespoň tří virtuálních počítačů pro obecné účely, jako je standard_d4s_v5 pro uzly clusteru, přičemž každý musí mít minimálně čtyři virtuální procesory (vCPU).
Vytvoření a připojení trvalých svazků
Pomocí těchto kroků vytvořte a připojte trvalý svazek.
1. Vytvoření fondu úložiště
Nejprve vytvořte fond úložiště, což je logické seskupení úložiště pro cluster Kubernetes tím, že ho definujete v souboru manifestu YAML.
Máte následující možnosti pro vytvoření fondu úložiště:
- Vytvoření dynamického fondu úložiště
- Vytvoření předem zřízeného fondu úložiště pomocí předem zřízených spravovaných disků Azure
- Vytvoření dynamického fondu úložiště pomocí vlastního šifrovacího klíče (volitelného)
Pokud jste povolili službu Azure Container Storage pomocí az aks create
příkazů nebo az aks update
příkazů, možná už máte fond úložiště. Slouží kubectl get sp -n acstor
k získání seznamu fondů úložiště. Pokud už máte fond úložiště, který chcete použít, můžete tento krok přeskočit a přejít k zobrazení dostupných tříd úložiště.
Vytvoření dynamického fondu úložiště
Pokud chcete vytvořit dynamický fond úložiště pro disky Azure, postupujte podle těchto kroků.
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code acstor-storagepool.yaml
.Vložte následující kód. Hodnota názvu fondu úložiště může být libovolná. Pro skuName zadejte úroveň výkonu a redundance. Přijatelné hodnoty jsou Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS a StandardSSD_ZRS. V případě úložiště zadejte velikost kapacity úložiště pro fond v Gi nebo Ti.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS resources: requests: storage: 1Ti
Pokud používáte UltraSSD_LRS nebo PremiumV2_LRS disky, můžete nastavit IOPS a propustnost pomocí
IOPSReadWrite
parametrůMBpsReadWrite
v definici fondu úložiště.IOPSReadWrite
odkazuje na počet IOPS povolených pro disky SSD úrovně Ultra a LRS úrovně Premium v2. Další informace najdete v tématu IOPS disku Úrovně Ultra a IOPS ssd úrovně Premium v2.MBpsReadWrite
označuje šířku pásma povolenou pro disky SSD úrovně Ultra a LRS úrovně Premium v2. Mb/s označuje miliony bajtů za sekundu (MB/s = 10^6 bajtů za sekundu). Další informace najdete v tématu Propustnost disku Úrovně Ultra a Propustnost SSD úrovně Premium v2.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: PremiumV2_LRS iopsReadWrite: 5000 mbpsReadWrite: 200 resources: requests: storage: 1Ti
Uložte soubor manifestu YAML a pak ho použijte k vytvoření fondu úložiště.
kubectl apply -f acstor-storagepool.yaml
Po dokončení vytváření fondu úložiště se zobrazí zpráva typu:
storagepool.containerstorage.azure.com/azuredisk created
Můžete také spustit tento příkaz a zkontrolovat stav fondu úložiště. Nahraďte
<storage-pool-name>
hodnotou názvu fondu úložiště. V tomto příkladu by hodnota byla azuredisk.kubectl describe sp <storage-pool-name> -n acstor
Po vytvoření fondu úložiště vytvoří Služba Azure Container Storage za vás třídu úložiště pomocí konvence acstor-<storage-pool-name>
vytváření názvů . Teď můžete zobrazit dostupné třídy úložiště a vytvořit trvalou deklaraci identity svazku.
Vytvoření předem zřízeného fondu úložiště
Pokud máte spravované disky Azure, které už jsou zřízené, můžete pomocí těchto disků vytvořit předem zřízený fond úložiště. Vzhledem k tomu, že disky jsou už zřízené, nemusíte při vytváření fondu úložiště zadávat skuName ani kapacitu úložiště.
Podle těchto kroků vytvořte předem zřízený fond úložiště pro disky Azure.
Přihlaste se k portálu Azure.
Pro každý disk, který chcete použít, přejděte na spravovaný disk Azure a vyberte Vlastnosti nastavení>. Zkopírujte celý řetězec pod ID prostředku a vložte ho do textového souboru.
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code acstor-storagepool.yaml
.Vložte následující kód. Hodnota názvu fondu úložiště může být libovolná. Nahraďte
<resource-id>
ID prostředku každého spravovaného disku. Uložte soubor.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: sp-preprovisioned namespace: acstor spec: poolType: azureDisk: disks: - reference <resource-id1> - reference <resource-id2>
Pomocí souboru manifestu YAML vytvořte fond úložiště.
kubectl apply -f acstor-storagepool.yaml
Po dokončení vytváření fondu úložiště se zobrazí zpráva typu:
storagepool.containerstorage.azure.com/sp-preprovisioned created
Můžete také spustit tento příkaz a zkontrolovat stav fondu úložiště. Nahraďte
<storage-pool-name>
hodnotou názvu fondu úložiště. V tomto příkladu by hodnota byla předem zřízený.kubectl describe sp <storage-pool-name> -n acstor
Po vytvoření fondu úložiště vytvoří Služba Azure Container Storage za vás třídu úložiště pomocí konvence acstor-<storage-pool-name>
vytváření názvů . Teď můžete zobrazit dostupné třídy úložiště a vytvořit trvalou deklaraci identity svazku.
Vytvoření dynamického fondu úložiště pomocí vlastního šifrovacího klíče (volitelného)
Všechna data v účtu úložiště Azure se šifrují v klidovém stavu. Ve výchozím nastavení se data šifrují pomocí klíčů spravovaných Microsoftem. Pokud chcete mít větší kontrolu nad šifrovacími klíči, můžete při vytváření fondu úložiště zadat klíče spravované zákazníkem (CMK), které budou šifrovat trvalé svazky, které vytvoříte.
Pokud chcete pro šifrování na straně serveru použít vlastní klíč, musíte mít službu Azure Key Vault s klíčem. Služba Key Vault by měla mít povolenou ochranu před vymazáním a musí používat model oprávnění Azure RBAC. Přečtěte si další informace o klíčích spravovaných zákazníkem v Linuxu.
Při vytváření fondu úložiště musíte definovat parametry CMK. Požadované parametry šifrování CMK jsou:
- keyVersion určuje verzi klíče, která se má použít.
- keyName je název vašeho klíče.
- keyVaultUri je jednotný identifikátor prostředku služby Azure Key Vault, například
https://user.vault.azure.net
- Identita určuje spravovanou identitu s přístupem k trezoru, například
/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool
Pomocí těchto kroků vytvořte fond úložiště pomocí vlastního šifrovacího klíče. Všechny trvalé svazky vytvořené z tohoto fondu úložiště budou šifrované pomocí stejného klíče.
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code acstor-storagepool-cmk.yaml
.Vložte následující kód, zadejte požadované parametry a uložte soubor. Hodnota názvu fondu úložiště může být libovolná. Pro skuName zadejte úroveň výkonu a redundance. Přijatelné hodnoty jsou Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS a StandardSSD_ZRS. V případě úložiště zadejte velikost kapacity úložiště pro fond v Gi nebo Ti. Nezapomeňte zadat parametry šifrování CMK.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS encryption: { keyVersion: "<key-version>", keyName: "<key-name>", keyVaultUri: "<key-vault-uri>", identity: "<identity>" } resources: requests: storage: 1Ti
Pomocí souboru manifestu YAML vytvořte fond úložiště.
kubectl apply -f acstor-storagepool-cmk.yaml
Po dokončení vytváření fondu úložiště se zobrazí zpráva typu:
storagepool.containerstorage.azure.com/azuredisk created
Můžete také spustit tento příkaz a zkontrolovat stav fondu úložiště. Nahraďte
<storage-pool-name>
hodnotou názvu fondu úložiště. V tomto příkladu by hodnota byla azuredisk.kubectl describe sp <storage-pool-name> -n acstor
Po vytvoření fondu úložiště vytvoří Služba Azure Container Storage za vás třídu úložiště pomocí konvence acstor-<storage-pool-name>
vytváření názvů .
2. Zobrazení dostupných tříd úložiště
Jakmile je fond úložiště připravený k použití, musíte vybrat třídu úložiště, která definuje, jak se úložiště dynamicky vytváří při vytváření trvalých deklarací identity svazků a nasazování trvalých svazků.
Spuštěním zobrazte kubectl get sc
dostupné třídy úložiště. Měla by se zobrazit třída úložiště s názvem acstor-<storage-pool-name>
.
Důležité
Nepoužívejte třídu úložiště, která je označená jako interní. Je to interní třída úložiště, která je potřebná pro fungování služby Azure Container Storage.
3. Vytvoření trvalé deklarace identity svazku
Deklarace trvalého svazku (PVC) se používá k automatickému zřizování úložiště na základě třídy úložiště. Pomocí těchto kroků vytvořte PVC pomocí nové třídy úložiště.
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code acstor-pvc.yaml
.Vložte následující kód a soubor uložte. Hodnota PVC
name
může být cokoli, co chcete.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurediskpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk # replace with the name of your storage class if different resources: requests: storage: 100Gi
Pomocí souboru manifestu YAML vytvořte PVC.
kubectl apply -f acstor-pvc.yaml
Zobrazený výstup by měl vypadat přibližně takto:
persistentvolumeclaim/azurediskpvc created
Stav PVC můžete ověřit spuštěním následujícího příkazu:
kubectl describe pvc azurediskpvc
Po vytvoření PVC je připraven k použití podem.
4. Nasazení podu a připojení trvalého svazku
Vytvořte pod pomocí Fio (flexibilní V/V Tester) pro srovnávací testy a simulaci úloh a zadejte cestu připojení k trvalému svazku. V případě deklarace identity použijte hodnotu názvu , kterou jste použili při vytváření deklarace trvalého svazku.
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code acstor-pod.yaml
.Vložte následující kód a soubor uložte.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: azurediskpv persistentVolumeClaim: claimName: azurediskpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: azurediskpv
Nasaďte pod pomocí souboru manifestu YAML.
kubectl apply -f acstor-pod.yaml
Zobrazený výstup by měl vypadat přibližně takto:
pod/fiopod created
Zkontrolujte, že je pod spuštěný a že deklarace trvalého svazku byla úspěšně svázaná s podem:
kubectl describe pod fiopod kubectl describe pvc azurediskpvc
Zkontrolujte testování fio a podívejte se na aktuální stav:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Teď jste nasadili pod, který jako úložiště používá disky Azure, a můžete ho použít pro úlohy Kubernetes.
Správa trvalých svazků a fondů úložiště
Teď, když jste vytvořili trvalý svazek, můžete ho podle potřeby odpojit a znovu připojit. Fond úložiště můžete také rozbalit nebo odstranit.
Odpojení a opětovné připojení trvalého svazku
Pokud chcete odpojit trvalý svazek, odstraňte pod, ke kterému je trvalý svazek připojený. Nahraďte <pod-name>
názvem podu, například fiopod.
kubectl delete pods <pod-name>
Pokud chcete trvalý svazek znovu připojit, jednoduše odkazujte na název deklarace identity trvalého svazku v souboru manifestu YAML, jak je popsáno v části Nasazení podu a připojte trvalý svazek.
Pokud chcete zkontrolovat, ke kterému trvalému svazku je vázána deklarace identity trvalého svazku, spusťte kubectl get pvc <persistent-volume-claim-name>
příkaz .
Rozšíření fondu úložiště
Fondy úložiště zálohované disky Azure můžete rozšířit, abyste mohli rychle a bez výpadků vertikálně navýšit kapacitu. Zmenšení fondů úložiště se v současné době nepodporuje. Rozšíření fondu úložiště není podporováno pro disky Ultra nebo SSD úrovně Premium v2.
Poznámka:
Rozšíření fondu úložiště může zvýšit náklady na Azure Container Storage a disky Azure. Podívejte se na stránku s cenami služby Azure Container Storage a seznamte se s fakturací služby Azure Container Storage.
V současné době má rozšíření fondu úložiště následující omezení při použití Premium_LRS
, Standard_LRS
, StandardSSD_LRS
Premium_ZRS
a StandardSSD_ZRS
SKU:
- Pokud je váš existující fond úložiště menší než 4 TiB (4 096 GiB), můžete ho rozšířit až na 4 095 GiB. Abyste se vyhnuli chybám, nepokoušejte se rozšířit aktuální fond úložiště nad 4 095 GiB, pokud je zpočátku menší než 4 TiB (4 096 GiB). Fondy > úložiště 4 TiB je možné rozšířit až na maximální dostupnou kapacitu úložiště.
Podle těchto pokynů rozbalte existující fond úložiště pro disky Azure.
Pomocí textového editoru otevřete soubor manifestu YAML, který jste použili k vytvoření fondu úložiště, například
code acstor-storagepool.yaml
.Nahraďte zadanou položku úložiště v souboru manifestu YAML požadovanou hodnotou. Tato hodnota musí být větší než aktuální kapacita fondu úložiště. Pokud je například specifikace nastavena na
storage: 1Ti
, změňte ji nastorage: 2Ti
. Pokud jste vytvořili předem zřízený fond úložiště, nebude k dispozici položka úložiště , protože fond úložiště zdědil velikost kapacity z předem zřízených disků Azure. Pokud v YAML nevidíte položku úložiště , přidejte následující kód určující požadovanou kapacitu úložiště a pak soubor manifestu uložte:spec: resources: requests: storage: 2Ti
Poznámka:
Pokud máte ve fondu úložiště dva disky s kapacitou 1 TiB a upravíte soubor manifestu YAML tak, aby se načetl storage: 4Ti
, oba disky se při použití YAML rozšíří na 2 TiB, což vám poskytne novou celkovou kapacitu 4 TiB.
Pomocí souboru manifestu YAML rozbalte fond úložiště.
kubectl apply -f acstor-storagepool.yaml
Spuštěním tohoto příkazu zkontrolujte stav fondu úložiště. Nahraďte
<storage-pool-name>
hodnotou názvu fondu úložiště.kubectl describe sp <storage-pool-name> -n acstor
Měla by se zobrazit zpráva typu "Fond úložiště se rozšiřuje". Spusťte příkaz znovu po několika minutách a zpráva by měla být pryč.
Spuštění
kubectl get sp -A
a fond úložiště by měl odrážet novou velikost.
Odstranění fondu úložiště
Pokud chcete odstranit fond úložiště, spusťte následující příkaz. Nahraďte <storage-pool-name>
názvem fondu úložiště.
kubectl delete sp -n acstor <storage-pool-name>