Använda Förhandsversionen av Azure Container Storage med tillfällig disk
Azure Container Storage är en molnbaserad volymhanterings-, distributions- och orkestreringstjänst som skapats internt för containrar. Den här artikeln visar hur du konfigurerar Azure Container Storage att använda Tillfällig disk som serverdelslagring för dina Kubernetes-arbetsbelastningar. I slutet har du en podd som använder antingen lokal NVMe eller temp SSD som lagringsplats.
Viktigt!
Lokala diskar är tillfälliga, vilket innebär att de skapas på lagringen för den lokala virtuella datorn (VM) och inte sparas i en Azure-lagringstjänst. Data går förlorade på dessa diskar om du stoppar/frigör den virtuella datorn. Du kan bara skapa Kubernetes generiska tillfälliga volymer från en tillfällig disklagringspool. Om du vill skapa en beständig volym måste du aktivera replikering för lagringspoolen.
Förutsättningar
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Den här artikeln kräver den senaste versionen (2.35.0 eller senare) av Azure CLI. Se Så här installerar du Azure CLI. Om du använder Bash-miljön i Azure Cloud Shell är den senaste versionen redan installerad. Om du planerar att köra kommandona lokalt i stället för i Azure Cloud Shell ska du köra dem med administratörsbehörighet. Mer information finns i Komma igång med Azure Cloud Shell.
Du behöver Kubernetes kommandoradsklient,
kubectl
. Det är redan installerat om du använder Azure Cloud Shell, eller om du kan installera det lokalt genom attaz aks install-cli
köra kommandot .
- Om du inte redan har installerat Azure Container Storage följer du anvisningarna i Installera Azure Container Storage.
Kommentar
Om du vill använda Azure Container Storage med tillfällig disk bör AKS-klustret ha en nodpool på minst tre lagringsoptimerade virtuella datorer , till exempel standard_l8s_v3. Vi rekommenderar att varje virtuell dator har minst fyra virtuella processorer (vCPU:er).
Regional tillgänglighet
Azure Container Storage är endast tillgängligt för en delmängd av Azure-regioner:
- (Afrika) Sydafrika, norra
- (Asien och stillahavsområdet) Australien, östra
- (Asien och Stillahavsområdet) Asien, östra
- (Asien och stillahavsområdet) Japan, östra
- (Asien och Stillahavsområdet) Korea, centrala
- (Asien och Stillahavsområdet) Sydostasien
- (Asien och stillahavsområdet) Indien, centrala
- (Europa) Frankrike, centrala
- (Europa) Europa, norra
- (Europa) Europa, västra
- (Europa) Storbritannien, södra
- (Europa) Sverige, centrala
- (Europa) Schweiz, norra
- (Mellanöstern) Förenade Arabemiraten, norra
- (Nordamerika) USA, östra
- (Nordamerika) USA, östra 2
- (Nordamerika) USA, västra
- (Nordamerika) USA, västra 2
- (Nordamerika) USA, västra 3
- (Nordamerika) USA, centrala
- (Nordamerika) USA, norra centrala
- (Nordamerika) USA, södra centrala
- (Nordamerika) USA, västra centrala
- (Nordamerika) Kanada, centrala
- (Nordamerika) Kanada, östra
- (Sydamerika) Brasilien, södra
Skapa en lagringspool
Skapa först en lagringspool, som är en logisk gruppering av lagring för ditt Kubernetes-kluster, genom att definiera den i en YAML-manifestfil.
Om du har aktiverat Azure Container Storage med hjälp av az aks create
eller az aks update
kommandon kanske du redan har en lagringspool. Använd kubectl get sp -n acstor
för att hämta listan över lagringspooler. Om du redan har en tillgänglig lagringspool som du vill använda kan du hoppa över det här avsnittet och fortsätta till Visa tillgängliga lagringsklasser.
Du har tre alternativ för att skapa en lagringspool som använder tillfällig disk:
- Skapa lagringspool med lokal NVMe
- Skapa lagringspool med temp SSD
- Skapa lagringspool med lokal NVMe och replikering
Skapa en lagringspool med NVMe
Följ de här stegen för att skapa en lagringspool med hjälp av lokal NVMe.
Använd din favorittextredigerare för att skapa en YAML-manifestfil,
code acstor-storagepool.yaml
till exempel .Klistra in följande kod och spara filen. Värdet för lagringspoolens namn kan vara vad du vill.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk namespace: acstor spec: poolType: ephemeralDisk: {}
Använd YAML-manifestfilen för att skapa lagringspoolen.
kubectl apply -f acstor-storagepool.yaml
När lagringspoolen har skapats visas ett meddelande som:
storagepool.containerstorage.azure.com/ephemeraldisk created
Du kan också köra det här kommandot för att kontrollera lagringspoolens status. Ersätt
<storage-pool-name>
med värdet för lagringspoolens namn . I det här exemplet skulle värdet vara tillfälligadiskar.kubectl describe sp <storage-pool-name> -n acstor
När lagringspoolen skapas skapar Azure Container Storage en lagringsklass åt dig med hjälp av namngivningskonventionen acstor-<storage-pool-name>
.
Skapa en lagringspool med temp SSD
Följ de här stegen för att skapa en lagringspool med hjälp av temp SSD.
Använd din favorittextredigerare för att skapa en YAML-manifestfil,
code acstor-storagepool.yaml
till exempel .Klistra in följande kod och spara filen. Värdet för lagringspoolens namn kan vara vad du vill.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
Använd YAML-manifestfilen för att skapa lagringspoolen.
kubectl apply -f acstor-storagepool.yaml
När lagringspoolen har skapats visas ett meddelande som:
storagepool.containerstorage.azure.com/ephemeraldisk created
Du kan också köra det här kommandot för att kontrollera lagringspoolens status. Ersätt
<storage-pool-name>
med värdet för lagringspoolens namn . I det här exemplet skulle värdet vara tillfälligadiskar.kubectl describe sp <storage-pool-name> -n acstor
När lagringspoolen skapas skapar Azure Container Storage en lagringsklass åt dig med hjälp av namngivningskonventionen acstor-<storage-pool-name>
.
Visa tillgängliga lagringsklasser
När lagringspoolen är redo att användas måste du välja en lagringsklass för att definiera hur lagring skapas dynamiskt när du skapar beständiga volymanspråk och distribuerar beständiga volymer.
Kör kubectl get sc
för att visa tillgängliga lagringsklasser. Du bör se en lagringsklass med namnet acstor-<storage-pool-name>
.
Viktigt!
Använd inte lagringsklassen som är markerad som intern. Det är en intern lagringsklass som behövs för att Azure Container Storage ska fungera.
Distribuera en podd med en allmän tillfällig volym
Skapa en podd med Fio (flexibel I/O-testare) för benchmarking och arbetsbelastningssimulering, som använder en allmän tillfällig volym.
Använd din favorittextredigerare för att skapa en YAML-manifestfil,
code acstor-pod.yaml
till exempel .Klistra in följande kod och spara filen.
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-nvme" # replace with the name of your storage class if different resources: requests: storage: 1Gi
Använd YAML-manifestfilen för att distribuera podden.
kubectl apply -f acstor-pod.yaml
Du bör se utdata som liknar följande:
pod/fiopod created
Kontrollera att podden körs och att det tillfälliga volymanspråket har bundits till podden:
kubectl describe pod fiopod kubectl describe pvc fiopod-ephemeralvolume
Kontrollera fio-testningen för att se dess aktuella status:
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
Nu har du distribuerat en podd som använder Ephemeral Disk som lagringsplats, och du kan använda den för dina Kubernetes-arbetsbelastningar.
Expandera en lagringspool
Du kan expandera lagringspooler som backas upp av lokala NVMe eller temp SSD för att skala upp snabbt och utan driftstopp. Krympande lagringspooler stöds inte för närvarande.
Eftersom en lagringspool som backas upp av tillfälliga diskar använder lokala lagringsresurser på AKS-klusternoderna (VM: ar), måste du lägga till en annan nod i klustret för att expandera lagringspoolen. Följ de här anvisningarna för att expandera lagringspoolen.
Kör följande kommando för att lägga till en nod i AKS-klustret. Ersätt
<cluster-name>
,<nodepool name>
och<resource-group-name>
med dina egna värden. Kör för att hämta namnet på nodpoolenkubectl get nodes
.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
Kör
kubectl get nodes
så ser du att en nod har lagts till i klustret.Kör
kubectl get sp -A
och du bör se att lagringspoolens kapacitet har ökat.
Ta bort en lagringspool
Kör följande kommando om du vill ta bort en lagringspool. Ersätt <storage-pool-name>
med namnet på lagringspoolen.
kubectl delete sp -n acstor <storage-pool-name>
Valfritt: Skapa lagringspool med volymreplikering (endast NVMe)
Program som använder lokal NVMe kan utnyttja lagringsreplikering för bättre återhämtning. Replikering stöds för närvarande inte för temporär SSD.
Azure Container Storage stöder för närvarande konfigurationer med tre repliker och fem repliker. Om du anger tre repliker måste du ha minst tre noder i AKS-klustret. Om du anger fem repliker måste du ha minst fem noder.
Följ de här stegen för att skapa en lagringspool med hjälp av lokal NVMe med replikering.
Kommentar
Eftersom tillfälliga disklagringspooler använder alla tillgängliga NVMe-diskar måste du ta bort alla befintliga lokala NVMe-lagringspooler för tillfälliga diskar innan du skapar en ny lagringspool med replikering.
Använd din favorittextredigerare för att skapa en YAML-manifestfil,
code acstor-storagepool.yaml
till exempel .Klistra in följande kod och spara filen. Värdet för lagringspoolens namn kan vara vad du vill. Ange repliker till 3 eller 5.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: nvme namespace: acstor spec: poolType: ephemeralDisk: diskType: nvme replicas: 3
Använd YAML-manifestfilen för att skapa lagringspoolen.
kubectl apply -f acstor-storagepool.yaml
När lagringspoolen har skapats visas ett meddelande som:
storagepool.containerstorage.azure.com/nvme created
Du kan också köra det här kommandot för att kontrollera lagringspoolens status. Ersätt
<storage-pool-name>
med värdet för lagringspoolens namn . I det här exemplet skulle värdet vara nvme.kubectl describe sp <storage-pool-name> -n acstor
När lagringspoolen skapas skapar Azure Container Storage en lagringsklass åt dig med hjälp av namngivningskonventionen acstor-<storage-pool-name>
. Nu kan du visa tillgängliga lagringsklasser och skapa ett beständiga volymanspråk.
Skapa ett beständigt volymanspråk
Ett beständiga volymanspråk (PVC) används för att automatiskt etablera lagring baserat på en lagringsklass. Följ dessa steg för att skapa en PVC med hjälp av den nya lagringsklassen.
Använd din favorittextredigerare för att skapa en YAML-manifestfil,
code acstor-pvc.yaml
till exempel .Klistra in följande kod och spara filen. PVC-värdet
name
kan vara vad du vill.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different resources: requests: storage: 100Gi
Använd YAML-manifestfilen för att skapa PVC.
kubectl apply -f acstor-pvc.yaml
Du bör se utdata som liknar följande:
persistentvolumeclaim/ephemeralpvc created
Du kan kontrollera status för PVC genom att köra följande kommando:
kubectl describe pvc ephemeralpvc
När PVC:en har skapats är den redo att användas av en podd.
Distribuera en podd och bifoga en beständig volym
Skapa en podd med Fio (flexibel I/O-testare) för benchmarking och arbetsbelastningssimulering och ange en monteringssökväg för den beständiga volymen. För claimName använder du det namnvärde som du använde när du skapade det beständiga volymanspråket.
Använd din favorittextredigerare för att skapa en YAML-manifestfil,
code acstor-pod.yaml
till exempel .Klistra in följande kod och spara filen.
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
Använd YAML-manifestfilen för att distribuera podden.
kubectl apply -f acstor-pod.yaml
Du bör se utdata som liknar följande:
pod/fiopod created
Kontrollera att podden körs och att det beständiga volymanspråket har bundits till podden:
kubectl describe pod fiopod kubectl describe pvc ephemeralpvc
Kontrollera fio-testningen för att se dess aktuella status:
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
Nu har du distribuerat en podd som använder Ephemeral Disk som lagringsplats, och du kan använda den för dina Kubernetes-arbetsbelastningar.
Koppla från och koppla från en beständig volym igen
Om du vill koppla från en beständiga volym tar du bort podden som den beständiga volymen är kopplad till. Ersätt <pod-name>
med poddens namn, till exempel fiopod.
kubectl delete pods <pod-name>
Om du vill återansluta en beständig volym refererar du helt enkelt till namnet på beständiga volymanspråk i YAML-manifestfilen enligt beskrivningen i Distribuera en podd och bifoga en beständiga volym.
Om du vill kontrollera vilken beständig volym som ett beständiga volymanspråk är bundet till kör du kubectl get pvc <persistent-volume-claim-name>
.