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.
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 pro úlohy Kubernetes používala místní disk NVMe jako back-endové úložiště. NVMe je navržený pro vysokorychlostní přenos dat mezi úložištěm a procesorem a poskytuje vysokou IOPS a propustnost.
Důležité
Tento článek se týká služby Azure Container Storage (verze 2.x.x), která aktuálně podporuje pouze místní disk NVMe pro zálohování úložiště. Podrobnosti o starších verzích najdete v dokumentaci ke službě Azure Container Storage (verze 1.x.x).
Co je místní NVMe?
Pokud vaše aplikace potřebuje latenci úložiště v milisekundách a vysokou propustnost, můžete použít místní disky NVMe se službou Azure Container Storage ke splnění vašich požadavků 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. Místní disky NVMe se nabízejí na vybraných rodinách virtuálních počítačů Azure, jako jsou virtuální počítače optimalizované pro úložiště .
Azure Container Storage ve výchozím nastavení vytváří obecné dočasné svazky při použití místních disků NVMe. Pro případy použití, které vyžadují trvalé deklarace identity svazku, můžete přidat poznámku localdisk.csi.acstor.io/accept-ephemeral-storage: "true" do šablony trvalé deklarace identity svazku.
Prokládání dat
Kvůli maximalizaci výkonu Azure Container Storage automaticky prokládání dat napříč všemi dostupnými místními disky NVMe na jednotlivých virtuálních počítačích. Striping je technika, kdy se data dělí na malé bloky dat a rovnoměrně zapisují na více discích současně, což zvyšuje propustnost a zlepšuje celkový výkon vstupně-výstupních operací. Toto chování je ve výchozím nastavení povolené a nelze ho zakázat.
Vzhledem k tomu, že agregace výkonu napříč těmito diskovými poli s pruhy mohou větší virtuální počítače, které zpřístupňují více NVMe disků, umožnit podstatně vyšší IOPS a šířku pásma. Když vyberete větší řadu virtuálních počítačů, budou vaše úlohy těžit z dodatečné agregované propustnosti bez další konfigurace.
Řada Lsv3 se například škáluje z jedné jednotky NVMe o velikosti 1,92 TB na Standard_L8s_v3 (přibližně 400 000 IOPS a 2 000 MB/s) až na 10 jednotek NVMe na Standard_L80s_v3 (přibližně 3,8 milionu IOPS a 20 000 MB/s).
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.77.0 nebo novější). Přečtěte si , jak nainstalovat Azure CLI. Vyhněte se Azure Cloud Shellu, protože
az upgradenení v Cloud Shellu k dispozici. Nezapomeňte spouštět příkazy v tomto článku s oprávněními správce.Projděte si pokyny k instalaci a ujistěte se, že je služba Azure Container Storage správně nainstalovaná.
Potřebujete klienta příkazového řádku Kubernetes.
kubectlMůžete ho nainstalovat místně spuštěnímaz aks install-clipříkazu.Zkontrolujte, jestli je vaše cílová oblast podporovaná v oblastech Azure Container Storage.
Zvolte typ virtuálního počítače, který podporuje místní NVMe.
Místní disky NVMe jsou dostupné jenom v určitých typech virtuálních počítačů, například virtuálních počítačů optimalizovaných pro úložiště nebo virtuálních počítačích s akcelerovanými gpu. Pokud plánujete použít místní kapacitu NVMe, zvolte jednu z těchto velikostí virtuálních počítačů.
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ásledující výstup je příkladem.
PoolName VmSize
---------- ---------------
nodepool1 standard_l8s_v3
Poznámka:
Ve službě Azure Container Storage (verze 2.x.x) teď můžete používat clustery s méně než třemi uzly.
Vytvoření a připojení obecných dočasných svazků
Pokud jste to ještě neudělali, nainstalujte Službu Azure Container Storage.
Pomocí těchto kroků vytvořte a připojte obecný dočasný svazek pomocí služby Azure Container Storage.
1. Vytvoření třídy úložiště
Na rozdíl od předchozích verzí, které vyžadovaly vytvoření vlastního prostředku fondu úložiště, Azure Container Storage (verze 2.x.x) používá standardní třídy úložiště Kubernetes.
Pokud chcete vytvořit třídu úložiště pomocí místního NVMe, postupujte podle těchto kroků.
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code storageclass.yaml.Vložte následující kód a soubor uložte.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local provisioner: localdisk.csi.acstor.io reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: truePomocí souboru manifestu YAML vytvořte fond úložiště.
kubectl apply -f storageclass.yaml
2. Ověření třídy úložiště
Spuštěním následujícího příkazu ověřte, že je vytvořená třída úložiště:
kubectl get storageclass local
Zobrazený výstup by měl vypadat přibližně takto:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local localdisk.csi.acstor.io Delete WaitForFirstConsumer true 10s
3. Nasazení podu s obecným dočasným svazkem
Vytvořte pod pomocí fio (flexibilního V/V Testeru) 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 fiopod.yaml.Vložte následující kód a soubor uložte.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: "kubernetes.io/os": linux containers: - name: fio image: mayadata/fio args: ["sleep", "1000000"] volumeMounts: - mountPath: "/volume" name: ephemeralvolume volumes: - name: ephemeralvolume ephemeral: volumeClaimTemplate: spec: volumeMode: Filesystem accessModes: ["ReadWriteOnce"] storageClassName: local resources: requests: storage: 10GiNasaďte pod pomocí souboru manifestu YAML.
kubectl apply -f fiopod.yaml
4. Ověření nasazení a spuštění srovnávacích testů
Zkontrolujte, jestli je pod spuštěný:
kubectl get pod fiopod
Pod by se měl zobrazit ve spuštěném stavu. Po spuštění můžete spustit srovnávací test Fio:
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
Vytvoření a připojení trvalých svazků s poznámkou o efemérním úložišti
Obecné dočasné svazky se sice doporučují pro dočasné úložiště, ale Azure Container Storage také podporuje trvalé svazky s dočasným úložištěm v případě potřeby kompatibility se stávajícími úlohami.
Poznámka:
Azure Container Storage (verze 2.x.x) používá novou poznámku localdisk.csi.acstor.io/accept-ephemeral-storage: "true" místo předchozího acstor.azure.com/accept-ephemeral-storage: "true".
1. Vytvoření třídy úložiště (pokud ještě není vytvořeno)
Pokud jste to ještě neudělali, nainstalujte Službu Azure Container Storage.
Pokud jste nevytvořili třídu úložiště, která používá místní NVMe v předchozí části, vytvořte ji teď:
Pomocí oblíbeného textového editoru vytvořte soubor manifestu YAML, například
code storageclass.yaml.Vložte následující kód a soubor uložte.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local provisioner: localdisk.csi.acstor.io reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: truePomocí souboru manifestu YAML vytvořte fond úložiště.
kubectl apply -f storageclass.yaml
2. Nasazení stavové sady s trvalými svazky
Pokud potřebujete použít nároky na trvalé svazky, které nejsou svázané s životním cyklem podů, musíte přidat anotaci localdisk.csi.acstor.io/accept-ephemeral-storage: "true". Data na svazku jsou místní pro daný uzel a při odstranění uzlu nebo přesunutí podu do jiného uzlu dojde ke ztrátě.
Zde je příklad stavové sady s použitím trvalých svazků s anotací pro dočasné úložiště.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: statefulset-lcd-lvm-annotation
labels:
app: busybox
spec:
podManagementPolicy: Parallel
serviceName: statefulset-lcd
replicas: 10
template:
metadata:
labels:
app: busybox
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: statefulset-lcd
image: mcr.microsoft.com/azurelinux/busybox:1.36
command:
- "/bin/sh"
- "-c"
- set -euo pipefail; trap exit TERM; while true; do date -u +"%Y-%m-%dT%H:%M:%SZ" >> /mnt/lcd/outfile; sleep 1; done
volumeMounts:
- name: persistent-storage
mountPath: /mnt/lcd
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: busybox
volumeClaimTemplates:
- metadata:
name: persistent-storage
annotations:
localdisk.csi.acstor.io/accept-ephemeral-storage: "true"
spec:
accessModes: ["ReadWriteOnce"]
storageClassName: local
resources:
requests:
storage: 10Gi
Uložte a použijte tento YAML k vytvoření stavové sady s trvalými svazky:
kubectl apply -f statefulset-pvc.yaml
Správa úložiště
V této části se dozvíte, jak zkontrolovat kapacitu dočasného disku uzlu, rozšířit kapacitu úložiště a odstranit prostředky úložiště.
Kontrola dočasné kapacity disku uzlu
Dočasný svazek je přidělen na jednom uzlu. Při konfiguraci velikosti efemérních svazků by velikost měla být menší než dostupná kapacita efemérního disku jednoho uzlu.
Ujistěte se, že existuje třída StorageClass pro localdisk.csi.acstor.io . Spuštěním následujícího příkazu zkontrolujte dostupnou kapacitu dočasného disku pro každý uzel.
kubectl get csistoragecapacities.storage.k8s.io -n kube-system -o custom-columns=NAME:.metadata.name,STORAGE_CLASS:.storageClassName,CAPACITY:.capacity,NODE:.nodeTopology.matchLabels."topology\.localdisk\.csi\.acstor\.io/node"
Měl by se zobrazit výstup podobný následujícímu příkladu:
NAME STORAGE_CLASS CAPACITY NODE
csisc-2pkx4 local 1373172Mi aks-storagepool-31410930-vmss000001
csisc-gnmm9 local 1373172Mi aks-storagepool-31410930-vmss000000
Pokud narazíte na prázdný výstup kapacity, ověřte, že existuje třída StorageClass pro localdisk.csi.acstor.io . Prostředek csistoragecapacities.storage.k8s.io se vygeneruje pouze po vytvoření třídy StorageClass pro localdisk.csi.acstor.io .
Rozšíření kapacity úložiště
Vzhledem k tomu, že dočasné diskové úložiště používá místní prostředky na uzlech clusteru AKS, rozšíření kapacity úložiště vyžaduje přidání uzlů do clusteru.
Pokud chcete do clusteru přidat uzel, spusťte následující příkaz. Nahraďte <cluster-name>hodnoty a <nodepool-name><resource-group><new-count> nahraďte hodnotami.
az aks nodepool scale --cluster-name <cluster-name> --name <nodepool-name> --resource-group <resource-group> --node-count <new-count>
Odstraňte prostředky úložiště
Chcete-li vyčistit prostředky úložiště, musíte nejprve odstranit všechny PersistentVolumeClaims a/nebo PersistentVolumes. Odstranění třídy StorageClass služby Azure Container Storage automaticky neodebere vaše stávající PersistentVolumes/PersistentVolumeClaims.
Pokud chcete odstranit třídu úložiště s názvem local, spusťte následující příkaz:
kubectl delete storageclass local
Viz také
- Co je Azure Container Storage?
- Instalace služby Azure Container Storage s využitím AKS
- Použijte službu Azure Container Storage (verze 1.x.x) s místním NVMe
- Přehled nasazení vysoce dostupné databáze PostgreSQL ve službě Azure Kubernetes Service (AKS)
- Osvědčené postupy pro dočasné datové disky NVMe ve službě Azure Kubernetes Service (AKS)