Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Container Storage egy felhőalapú kötetkezelési, üzembe helyezési és vezénylési szolgáltatás, amely natív módon készült tárolókhoz. Ez a cikk bemutatja, hogyan konfigurálhatja az Azure Container Storage-t úgy, hogy helyi NVMe-lemezt használjon háttértárként a Kubernetes-számítási feladatokhoz. Az NVMe a tárolás és a PROCESSZOR közötti nagy sebességű adatátvitelre lett tervezve, magas IOPS-t és átviteli sebességet biztosítva.
Fontos
Ez a cikk az Azure Container Storage-ra (2.x.x-es verzió) vonatkozik, amely támogatja a helyi NVMe lemezt és az Azure Elastic SAN-t háttértároló-típusokként. A korábbi verziók részleteiért tekintse meg az Azure Container Storage (1.x.x verzió) dokumentációját.
Mi a helyi NVMe?
Ha az alkalmazásnak ezredmásodperc alatti tárolási késésre és magas átviteli sebességre van szüksége, a teljesítménykövetelmények teljesítéséhez használhat helyi NVMe-lemezeket az Azure Container Storage használatával. A rövid élettartam azt jelenti, hogy a lemezek az AKS-fürtöt üzemeltető helyi virtuális gépen (VM) vannak üzembe helyezve, és nem egy Azure Storage-szolgáltatásba vannak mentve. Az adatok elvesznek ezeken a lemezeken, ha leállítja/deallokálja a virtuális gépet. A helyi NVMe-lemezek olyan Azure-beli virtuálisgép-családokon érhetők el, mint például a tárolóoptimalizált virtuális gépek.
Az Azure Container Storage alapértelmezés szerint általános rövid élettartamú köteteket hoz létre helyi NVMe-lemezek használatakor. Állandó kötet igényeket igénylő használati esetek esetén hozzáadhatja a megjegyzést localdisk.csi.acstor.io/accept-ephemeral-storage: "true" az állandó kötet igény sablonjához.
Adatcsíkolás
A teljesítmény maximalizálása érdekében az Azure Container Storage automatikusan leválasztja az adatokat az összes rendelkezésre álló helyi NVMe-lemezről virtuális gépenként. A csíkozás olyan technika, amelyben az adatok kis adattömbökre vannak osztva, és egyszerre több lemezen egyenletesen vannak megírva, ami növeli az átviteli sebességet, és javítja az általános I/O-teljesítményt. Ez a viselkedés alapértelmezés szerint engedélyezve van, és nem tiltható le.
Mivel a teljesítmény ezeken a csíkos eszközökön összesül, a nagyobb, több NVMe-meghajtót elérhetővé tevő virtuálisgép-méretek jelentősen magasabb IOPS-t és sávszélességet nyithatnak meg. Egy nagyobb virtuálisgép-család kiválasztása lehetővé teszi, hogy a számítási feladatok további konfiguráció nélkül kihasználják az extra összesített átviteli sebességet.
Az Lsv3 sorozat például skálázható úgy, hogy az egyetlen 1,92 TB-os NVMe-meghajtóval rendelkező Standard_L8s_v3 (körülbelül 400 000 IOPS és 2000 MB/s) konfigurációról a 10 NVMe-meghajtóval rendelkező Standard_L80s_v3 (körülbelül 3,8 millió IOPS és 20 000 MB/s) konfigurációig növekszik.
Előfeltételek
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Ez a cikk az Azure CLI 2.83.0-s vagy újabb verzióját igényli. További információ: Az Azure CLI telepítése. Tiltsa le a bővítményeket, például
aks-previewha problémák lépnek fel. Szükség szerint telepítse vagy frissítse a bővítményeket:az extension add --upgrade --name k8s-extension-
az extension add --upgrade --name elastic-san(Csak rugalmas SAN)
Szüksége van a Kubernetes parancssori ügyfélre.
kubectlAz Azure Cloud Shell használata esetén már telepítve van. Aaz aks install-cliparancs futtatásával telepítheti helyileg.Ellenőrizze, hogy a célrégió támogatott-e az Azure Container Storage-régiókban.
- Tekintse át a telepítési utasításokat , és győződjön meg arról, hogy az Azure Container Storage megfelelően van telepítve.
Válasszon egy helyi NVMe-t támogató virtuálisgép-típust
A helyi NVMe-lemezek csak bizonyos típusú virtuális gépeken érhetők el, például tárolóoptimalizált virtuális gépeken vagy GPU-val gyorsított virtuális gépeken. Ha helyi NVMe-kapacitást szeretne használni, válasszon egyet ezek közül a virtuálisgép-méretek közül.
Futtassa a következő parancsot a csomópontkészlethez használt virtuálisgép-típus lekéréséhez. Cserélje le a <resource group> és a <cluster name> a saját értékeivel. Nem kell értékeket megadnia PoolName , VmSizeezért a lekérdezést az itt látható módon kell megadnia.
az aks nodepool list --resource-group <resource group> --cluster-name <cluster name> --query "[].{PoolName:name, VmSize:vmSize}" -o table
Az alábbi kimenet egy példa.
PoolName VmSize
---------- ---------------
nodepool1 standard_l8s_v3
Megjegyzés
Az Azure Container Storage -ban (2.x.x-es verzió) mostantól három csomópontnál kevesebb csomóponttal rendelkező fürtöket is használhat.
Azokban az esetekben, amikor egyetlen helyi NVMe-lemezzel rendelkező virtuálisgép-méreteket használ a rendszer a rövid élettartamú operációsrendszer-lemezek mellett, a helyi NVMe-lemez lesz lefoglalva az operációs rendszerhez, így az Azure Container Storage nem használhat kapacitást. A helyi NVMe-lemezek optimális teljesítményének és rendelkezésre állásának biztosítása érdekében javasoljuk, hogy tegye a következőket:
- Válassza ki a két vagy több helyi NVMe-lemezzel rendelkező virtuálisgép-méreteket.
- Felügyelt lemezeket használjon az operációs rendszerhez, és felszabadítsa az összes helyi NVMe-lemezt az adatfeldolgozáshoz.
További információkért tekintse meg az Azure Kubernetes Service rövid élettartamú NVMe-adatlemezeinek ajánlott eljárásait.
Tárolóosztály létrehozása a helyi NVMe-hez
Ha még nincs telepítve az Azure Container Storage, telepítse.
Az Azure Container Storage (2.x.x verzió) a helyi NVMe-t standard Kubernetes storage-osztályként mutatja be. Klaszterenként egyszer hozza létre a local-csi tárolási osztályt, és használja újra az általános múlékony kötetekhez és a persistent volume igényekhez.
A kedvenc szövegszerkesztővel hozzon létre egy YAML-jegyzékfájlt, például
storageclass.yaml, majd illessze be a következő specifikációba.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-csi provisioner: localdisk.csi.acstor.io reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: trueAlkalmazza a jegyzékfájlt a tárolási osztály létrehozásához.
kubectl apply -f storageclass.yaml
Másik lehetőségként létrehozhatja a tárolási osztályt a Terraform használatával.
A Terraform használatával kezelheti a tárolási osztályt az alábbihoz
main.tfhasonló konfiguráció létrehozásával. Frissítse a szolgáltató verzióját vagy a kubeconfig elérési útját a környezethez szükséges módon.terraform { required_version = ">= 1.5.0" required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "~> 3.0" } } } provider "kubernetes" { config_path = "~/.kube/config" } resource "kubernetes_storage_class_v1" "local_csi" { metadata { name = "local-csi" } storage_provisioner = "localdisk.csi.acstor.io" reclaim_policy = "Delete" volume_binding_mode = "WaitForFirstConsumer" allow_volume_expansion = true }Inicializálja, áttekinti és alkalmazza a konfigurációt a tárolási osztály létrehozásához.
terraform init terraform plan terraform apply
A tárolási osztály ellenőrzése
Futtassa a következő parancsot a tárosztály létrehozásának ellenőrzéséhez:
kubectl get storageclass local-csi
A következőhöz hasonló kimenetnek kell megjelennie:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-csi localdisk.csi.acstor.io Delete WaitForFirstConsumer true 10s
Általános rövid élettartamú kötetek létrehozása és csatolása
Az alábbi lépéseket követve általános rövid élettartamú kötetet hozhat létre és csatolhat az Azure Container Storage használatával. A folytatás előtt győződjön meg arról, hogy az Azure Container Storage telepítve van, és a local-csi tárolási osztály létezik.
Pod üzembe helyezése általános ideiglenes tárolóval
Hozzon létre egy podot a Fio (rugalmas I/O-tesztelő) használatával a teljesítményméréshez és a számítási feladatok szimulációhoz, amely általános rövid élettartamú kötetet használ.
A kedvenc szövegszerkesztővel hozzon létre egy YAML-jegyzékfájlt, például
code fiopod.yaml.Illessze be a következő kódot, és mentse a fájlt.
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-csi resources: requests: storage: 10GiAlkalmazza a YAML-jegyzékfájlt a pod üzembe helyezéséhez.
kubectl apply -f fiopod.yaml
Az üzembe helyezés ellenőrzése és a teljesítménytesztek futtatása
Ellenőrizze, hogy fut-e a pod:
kubectl get pod fiopod
A podnak a Futó állapotban kell megjelennie. A futtatás után végrehajthat egy Fio-teljesítménytesztet:
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
Állandó kötetek létrehozása és csatolása rövid élettartamú tárjegyzetekkel
Bár az általános rövid élettartamú kötetek rövid távú tároláshoz ajánlottak, az Azure Container Storage támogatja az állandó köteteket és a rövid élettartamú tárolókat is, ha szükséges a meglévő számítási feladatokkal való kompatibilitáshoz.
Megjegyzés
Az Azure Container Storage (2.x.x verzió) az előző localdisk.csi.acstor.io/accept-ephemeral-storage: "true"helyett az új széljegyzetet acstor.azure.com/accept-ephemeral-storage: "true" használja.
Az azt használó számítási feladatok üzembe helyezése előtt győződjön meg arról, hogy az Azure Container Storage telepítve van, és a local-csi korábban létrehozott tárolási osztály elérhető.
Állapotalapú készlet üzembe helyezése állandó kötetekkel
Ha olyan állandó mennyiségi jogcímeket kell használnia, amelyek nincsenek a pod életciklusához kötve, hozzá kell adnia a localdisk.csi.acstor.io/accept-ephemeral-storage: "true" megjegyzést. A köteten lévő adatok helyiek a csomóponton, és elvesznek, ha a csomópontot törlik, vagy a podot egy másik csomópontra helyezik át.
Íme egy példa egy állapottartó készletre, amely állandó köteteket használ ideiglenes tároló annotációval.
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-csi
resources:
requests:
storage: 10Gi
Mentse és alkalmazza ezt a YAML-t az állapotalapú készlet állandó kötetekkel való létrehozásához:
kubectl apply -f statefulset-pvc.yaml
Tárhely kezelése
Ebben a szakaszban megtudhatja, hogyan ellenőrizheti a csomópont rövid élettartamú lemezkapacitását, bővítheti a tárkapacitást és törölheti a tárolási erőforrásokat.
Az ideiglenes csomópont-lemez kapacitásának ellenőrzése
A rendszer egy rövid ideig érvényes kötetet foglal le egyetlen csomóponton. A rövid élettartamú kötetek méretének konfigurálásakor a méretnek kisebbnek kell lennie, mint az egyetlen csomópont rövid élettartamú lemezének rendelkezésre álló kapacitása.
Győződjön meg arról, hogy létezik StorageClass localdisk.csi.acstor.io . Futtassa a következő parancsot a rövid élettartamú lemez rendelkezésre álló kapacitásának ellenőrzéséhez az egyes csomópontokhoz.
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"
A következő példához hasonló kimenetnek kell megjelennie:
NAME STORAGE_CLASS CAPACITY NODE
csisc-2pkx4 local-csi 1373172Mi aks-storagepool-31410930-vmss000001
csisc-gnmm9 local-csi 1373172Mi aks-storagepool-31410930-vmss000000
Ha üres kapacitáskimenetet észlel, ellenőrizze, hogy létezik-e egy StorageClass localdisk.csi.acstor.io. Az csistoragecapacities.storage.k8s.io erőforrás csak akkor jön létre, ha létezik StorageClass localdisk.csi.acstor.io .
Tárkapacitás bővítése
Mivel a rövid élettartamú lemeztároló helyi erőforrásokat használ az AKS-fürtcsomópontokon, a tárkapacitás bővítéséhez csomópontokat kell hozzáadni a fürthöz.
Ha csomópontot szeretne hozzáadni a fürthöz, futtassa a következő parancsot. Cserélje le <cluster-name>a , <nodepool-name>, <resource-group>és <new-count> az értékeket.
az aks nodepool scale --cluster-name <cluster-name> --name <nodepool-name> --resource-group <resource-group> --node-count <new-count>
Tárolási erőforrások törlése
A tárolási erőforrások törléséhez először törölnie kell az összes PersistentVolumeClaims és/vagy PersistentVolumes elemet. Az Azure Container Storage StorageClass törlése nem távolítja el automatikusan a meglévő PersistentVolumes/PersistentVolumeClaims-t.
Egy nevű local-csitárosztály törléséhez futtassa a következő parancsot:
kubectl delete storageclass local-csi
Lásd még
- Mi az Azure Container Storage?
- Az Azure Container Storage telepítése az AKS-sel
- Az Azure Container Storage (1.x.x verzió) használata a helyi NVMe-vel
- Magas rendelkezésre állású PostgreSQL-adatbázis üzembe helyezésének áttekintése az Azure Kubernetes Service-ben (AKS)
- Ajánlott eljárások rövid élettartamú NVMe-adatlemezekhez az Azure Kubernetes Service-ben (AKS)