Použití služby Azure Container Storage s dočasným SSD
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 dočasný disk s dočasným SSD jako back-endovým úložištěm pro vaše úlohy Kubernetes. Na konci budete mít pod, který jako úložiště používá dočasné SSD.
Co je dočasný disk?
Pokud vaše aplikace potřebuje latenci úložiště v milisekundách a nevyžaduje stálost dat, můžete pomocí dočasného disku se službou Azure Container Storage splnit vaše požadavky na výkon. Dočasné znamená, že disky se nasadí na místní virtuální počítač, který je hostitelem clusteru AKS, a neuloží se do služby Úložiště Azure. Pokud virtuální počítač zastavíte nebo uvolníte, dojde ke ztrátě dat na těchto discích.
Existují dva typy dočasného disku: místní NVMe a dočasné SSD. NVMe je navržený pro vysokorychlostní přenos dat mezi úložištěm a procesorem. Zvolte NVMe, pokud vaše aplikace potřebuje vyšší IOPS nebo propustnost než dočasné SSD, nebo vyžaduje více místa úložiště. Mějte na paměti, že Azure Container Storage podporuje pouze synchronní replikaci dat pro místní NVMe.
Vzhledem k dočasné povaze těchto disků azure Container Storage ve výchozím nastavení podporuje použití obecných dočasných svazků při použití dočasného disku. Některé případy použití ale můžou volat trvalé svazky i v případě, že data nejsou odolná. Pokud například chcete použít existující soubory YAML nebo šablony nasazení, které jsou pevně zakódované pro použití trvalých svazků, a vaše úloha podporuje replikaci na úrovni aplikace kvůli stálosti. V takových případech můžete aktualizovat instalaci služby Azure Container Storage a přidat poznámku acstor.azure.com/accept-ephemeral-storage=true
do definice trvalé deklarace identity svazku, která podporuje vytváření trvalých svazků z dočasných fondů úložiště disků.
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.
Zvolte typ virtuálního počítače, který podporuje dočasné SSD.
Dočasný disk je k dispozici pouze v určitých typech virtuálních počítačů. Ujistěte se, že jste vybrali typ virtuálního počítače s temp SSD, jako je Ev3 a Virtuální počítač řady Esv3.
Spuštěním následujícího příkazu získejte typ virtuálního počítače, který se používá s fondem uzlů. Nahraďte <resource group>
a <cluster name>
nahraďte vlastními hodnotami. Nemusíte zadávat hodnoty pro PoolName
nebo VmSize
, takže ponechte dotaz, jak je znázorněno zde.
az aks nodepool list --resource-group <resource group> --cluster-name <cluster name> --query "[].{PoolName:name, VmSize:vmSize}" -o table
Následuje příklad výstupu.
PoolName VmSize
---------- ---------------
nodepool1 standard_l8s_v3
Doporučujeme, aby každý virtuální počítač měl minimálně čtyři virtuální procesory (vCPU) a každý fond uzlů má aspoň tři uzly.
Vytvoření a připojení obecných dočasných svazků
Pomocí těchto kroků vytvořte a připojte obecný dočasný 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.
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 tuto část přeskočit a přejít k zobrazení dostupných tříd úložiště.
Pomocí následujícího postupu vytvořte fond úložiště pomocí dočasného ssd.
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 a soubor uložte. Hodnota názvu fondu úložiště může být libovolná.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk-temp namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
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/ephemeraldisk-temp 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 dočasného disku-temp.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>
.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk-temp containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
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. Nasazení podu s obecným dočasným svazkem
Vytvořte pod pomocí Fio (flexibilní V/V Tester) pro srovnávací testy a simulaci úloh, který používá obecný dočasný svazek.
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 containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralvolume volumes: - name: ephemeralvolume ephemeral: volumeClaimTemplate: metadata: labels: type: my-ephemeral-volume spec: accessModes: [ "ReadWriteOnce" ] storageClassName: acstor-ephemeraldisk-temp # replace with the name of your storage class if different resources: requests: storage: 1Gi
Když změníte velikost úložiště svazků, ujistěte se, že je velikost menší než dostupná kapacita dočasného disku s jedním uzlem. Viz Kontrola dočasné kapacity disku uzlu.
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, jestli je pod spuštěný a že se k podu úspěšně vázala dočasné deklarace svazku:
kubectl describe pod fiopod kubectl describe pvc fiopod-ephemeralvolume
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á dočasné SSD, a můžete ho použít pro úlohy Kubernetes.
Vytvoření a připojení trvalých svazků
Pokud chcete vytvořit trvalý svazek z dočasného fondu úložiště disků, musíte do deklarací trvalých deklarací svazků (PVCS) zahrnout poznámku, abyste měli jistotu, že chcete používat trvalé svazky, i když jsou data dočasné. Kromě toho je potřeba před vytvořením trvalých deklarací identity svazku --ephemeral-disk-volume-type
povolit příznak s PersistentVolumeWithAnnotation
hodnotou v clusteru.
Pomocí těchto kroků vytvořte a připojte trvalý svazek.
1. Aktualizace instalace služby Azure Container Storage
Spuštěním následujícího příkazu aktualizujte instalaci služby Azure Container Storage, abyste umožnili vytváření trvalých svazků z dočasných fondů úložiště disků.
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage ephemeralDisk --storage-pool-option Temp --ephemeral-disk-volume-type PersistentVolumeWithAnnotation
2. Vytvoření fondu úložiště
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.
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 tuto část přeskočit a přejít k zobrazení dostupných tříd úložiště.
Pomocí následujícího postupu vytvořte fond úložiště pomocí dočasného ssd.
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 a soubor uložte. Hodnota názvu fondu úložiště může být libovolná.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk-temp namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
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/ephemeraldisk-temp 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 dočasného disku-temp.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ů .
3. 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ě, abyste definovali, jak se úložiště dynamicky vytváří při vytváření a nasazování 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>
.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk-temp containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
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.
4. Vytvoření trvalé deklarace identity svazku
Deklarace trvalého svazku 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: ephemeralpvc annotations: acstor.azure.com/accept-ephemeral-storage: "true" spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-temp # replace with the name of your storage class if different resources: requests: storage: 100Gi
Při změně velikosti úložiště svazků se ujistěte, že je velikost menší než dostupná kapacita dočasného disku jednoho uzlu. Viz Kontrola dočasné kapacity disku uzlu.
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/ephemeralpvc created
Stav PVC můžete ověřit spuštěním následujícího příkazu:
kubectl describe pvc ephemeralpvc
Po vytvoření PVC je připraven k použití podem.
5. 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: ephemeralpv persistentVolumeClaim: claimName: ephemeralpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralpv
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 ephemeralpvc
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ý používá dočasné ssd, a můžete ho použít pro úlohy Kubernetes.
Správa svazků a fondů úložiště
V této části se dozvíte, jak zkontrolovat dostupnou kapacitu dočasného disku pro jeden uzel a jak rozbalit nebo odstranit fond úložiště.
Kontrola dočasné kapacity disku uzlu
Dočasný svazek je přidělen na jednom uzlu. Při konfiguraci velikosti dočasných svazků by velikost měla být menší než dostupná kapacita dočasného disku s jedním uzlem.
Spuštěním následujícího příkazu zkontrolujte dostupnou kapacitu dočasného disku pro jeden uzel.
$ kubectl get diskpool -n acstor
NAME CAPACITY AVAILABLE USED RESERVED READY AGE
ephemeraldisk-temp-diskpool-jaxwb 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-temp-diskpool-wzixx 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-temp-diskpool-xbtlj 75660001280 75031990272 628011008 560902144 True 21h
V tomto příkladu je dostupná kapacita dočasného disku pro jeden uzel 75031990272
bajty nebo 69 GiB.
Rozšíření fondu úložiště
Fondy úložiště zálohované dočasným SSD 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.
Vzhledem k tomu, že fond úložiště zálohovaný dočasným diskem používá prostředky místního úložiště na uzlech clusteru AKS, rozšíření fondu úložiště vyžaduje přidání dalšího uzlu do clusteru. Podle těchto pokynů rozbalte fond úložiště.
Spuštěním následujícího příkazu přidejte uzel do clusteru AKS. Nahraďte
<cluster-name>
,<nodepool name>
a<resource-group-name>
svými vlastními hodnotami. Pokud chcete získat název fondu uzlů, spusťtekubectl get nodes
příkaz .az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
Spusťte
kubectl get nodes
a uvidíte, že se uzel přidal do clusteru.Spusťte
kubectl get sp -A
a měli byste vidět, že se kapacita fondu úložiště zvýšila.
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>