Azure Operator Nexus-lagringsinstallation
Azure Operator Nexus bygger på grundläggande konstruktioner som beräkningsservrar, lagringsenheter och nätverksinfrastrukturenheter. Azure Operator Nexus-lagringsenheter representerar beständiga lagringsenheter på racket.
Varje lagringsenhet innehåller flera lagringsenheter som aggregeras för att tillhandahålla en enda lagringspool. Den här lagringspoolen delas sedan ut i flera volymer, som presenteras för beräkningsservrarna som blocklagringsenheter. Beräkningsservrarna kan använda dessa blocklagringsenheter som beständig lagring för sina arbetsbelastningar. Varje Azure Operator Nexus-kluster etableras med en enda lagringsenhet som delas mellan alla klientarbetsbelastningar.
Lagringsinstallationen i en Azure Operator Nexus-instans representeras som en Azure-resurs. Operatörer får åtkomst för att visa dess attribut som andra Azure-resurser.
Kubernetes-lagringsklasser
Azure Operator Nexus-programvaran Kubernetes stack erbjuder två typer av lagring. Operatorer väljer dem via Kubernetes StorageClass-mekanismen.
Viktigt!
Azure Operator Nexus stöder inte tillfälliga volymer. Nexus rekommenderar att de beständiga mekanismerna för volymlagring som beskrivs i det här dokumentet används för alla arbetsbelastningsvolymer eftersom de ger högsta prestanda och tillgänglighet. All lagring i Azure Operator Nexus tillhandahålls av lagringsinstallationen. Det finns inget stöd för lagring som tillhandahålls av baremetala datordiskar.
StorageClass: nexus-volume
Standardlagringsmekanismen nexus-volume är det bästa valet för de flesta användare. Den ger högsta möjliga prestanda och tillgänglighet. Volymer kan dock inte delas samtidigt över flera arbetsnoder. Operatörer kan komma åt och hantera dessa volymer med hjälp av Azure API och portalen via volymresursen.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: testPvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 107Mi
storageClassName: nexus-volume
volumeMode: Block
volumeName: testVolume
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 107Mi
phase: Bound
StorageClass: nexus-shared
I situationer där ett delat filsystem krävs är den nexus-delade lagringsklassen tillgänglig. Den här lagringsklassen ger en delad lagringslösning med hög tillgänglighet genom att flera poddar i samma Nexus Kubernetes-kluster kan komma åt och dela samma volym samtidigt. Den nexus-delade lagringsklassen backas upp av en NFS-lagringstjänst med hög tillgänglighet. Den här NFS-lagringstjänsten (lagringspoolen är för närvarande begränsad till en maximal storlek på 1 TiB) är tillgänglig per Cloud Service Network (CSN). NFS-lagringstjänsten distribueras automatiskt när en CSN-resurs skapas. Alla Nexus Kubernetes-kluster som är anslutna till CSN kan etablera beständiga volymer från den här delade lagringspoolen. Nexus-delad stöder både åtkomstlägena Read Write Once (RWO) och Read Write Many (RWX). Det innebär att arbetsbelastningsprogrammen kan använda något av dessa åtkomstlägen för att få åtkomst till den delade lagringen.
Bild: Delad Nexus-volym
Även om prestanda och tillgänglighet för nexus-delade är tillräckliga för de flesta program rekommenderar vi att arbetsbelastningar med höga I/O-krav använder nexus-volymalternativet för optimal prestanda.
Läs skrivning en gång (RWO)
I läget Skriv en gång (RWO) kan endast en nod eller sökande montera den nexus-delade volymen i taget. ReadWriteOnce-åtkomstläget tillåter fortfarande att flera poddar kommer åt volymen när poddarna körs på samma nod.
apiVersion: v1
items:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: nexus-shared
volumeMode: Filesystem
volumeName: TestVolume
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 5Gi
phase: Bound
Läs skriva många (RWX)
I läget Skriv många (RWX) kan flera noder eller sökande montera den nexus-delade volymen samtidigt.
apiVersion: v1
items:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
storageClassName: nexus-shared
volumeMode: Filesystem
volumeName: TestVolume
status:
accessModes:
- ReadWriteMany
capacity:
storage: 5Gi
phase: Bound
Exempel
Läs skrivning en gång (RWO) med nexus-volymlagringsklass
Det här exempelmanifestet skapar en StatefulSet med PersistentVolumeClaimTemplate med hjälp av nexus-volymlagringsklassen i ReadWriteOnce-läge.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: test-sts-rwo
labels:
app: test-sts-rwo
spec:
serviceName: test-sts-rwo-svc
replicas: 3
selector:
matchLabels:
app: test-sts-rwo
template:
metadata:
labels:
app: test-sts-rwo
spec:
containers:
- name: busybox
command:
- "/bin/sh"
- "-c"
- while true; do echo "$(date) -- $(hostname)" >> /mnt/hostname.txt; sleep 1; done
image: busybox
volumeMounts:
- name: test-volume-rwo
mountPath: /mnt/
volumeClaimTemplates:
- metadata:
name: test-volume-rwo
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
storageClassName: nexus-volume
Varje podd i StatefulSet har en PersistentVolumeClaim skapad.
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-volume-rwo-test-sts-rwo-0 Bound pvc-e41fec47-cc43-4cd5-8547-5a4457cbdced 10Gi RWO nexus-volume 8m17s
test-volume-rwo-test-sts-rwo-1 Bound pvc-1589dc79-59d2-4a1d-8043-b6a883b7881d 10Gi RWO nexus-volume 7m58s
test-volume-rwo-test-sts-rwo-2 Bound pvc-82e3beac-fe67-4676-9c61-e982022d443f 10Gi RWO nexus-volume 12s
# kubectl get pods -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-sts-rwo-0 1/1 Running 0 8m31s 10.245.231.74 nexus-cluster-6a8c4018-agentpool2-md-vhhv6 <none> <none>
test-sts-rwo-1 1/1 Running 0 8m12s 10.245.126.73 nexus-cluster-6a8c4018-agentpool1-md-27nw4 <none> <none>
test-sts-rwo-2 1/1 Running 0 26s 10.245.183.9 nexus-cluster-6a8c4018-agentpool1-md-4jprt <none> <none>
# kubectl exec test-sts-rwo-0 -- cat /mnt/hostname.txt
Thu Nov 9 21:57:25 UTC 2023 -- test-sts-rwo-0
Thu Nov 9 21:57:26 UTC 2023 -- test-sts-rwo-0
Thu Nov 9 21:57:27 UTC 2023 -- test-sts-rwo-0
# kubectl exec test-sts-rwo-1 -- cat /mnt/hostname.txt
Thu Nov 9 21:57:19 UTC 2023 -- test-sts-rwo-1
Thu Nov 9 21:57:20 UTC 2023 -- test-sts-rwo-1
Thu Nov 9 21:57:21 UTC 2023 -- test-sts-rwo-1
# kubectl exec test-sts-rwo-s -- cat /mnt/hostname.txt
Thu Nov 9 21:58:32 UTC 2023 -- test-sts-rwo-2
Thu Nov 9 21:58:33 UTC 2023 -- test-sts-rwo-2
Thu Nov 9 21:58:34 UTC 2023 -- test-sts-rwo-2
Läs skriva många (RWX) med nexus-delad lagringsklass
Manifestet nedan skapar en distribution med en PersistentVolumeClaim (PVC) med hjälp av nexus-delad lagringsklass i ReadWriteMany-läge. DEN PVC som skapats delas av alla poddar i distributionen och kan användas för att läsa och skriva av dem alla samtidigt.
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-volume-rwx
spec:
accessModes:
- ReadWriteMany
volumeMode: Filesystem
resources:
requests:
storage: 3Gi
storageClassName: nexus-shared
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test-deploy-rwx
name: test-deploy-rwx
spec:
replicas: 3
selector:
matchLabels:
app: test-deploy-rwx
template:
metadata:
labels:
app: test-deploy-rwx
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: kubernetes.azure.com/agentpool
operator: Exists
values: []
topologyKey: "kubernetes.io/hostname"
containers:
- name: busybox
command:
- "/bin/sh"
- "-c"
- while true; do echo "$(date) -- $(hostname)" >> /mnt/hostname.txt; sleep 1; done
image: busybox
volumeMounts:
- name: test-volume-rwx
mountPath: /mnt/
volumes:
- name: test-volume-rwx
persistentVolumeClaim:
claimName: test-volume-rwx
...
När den har tillämpats finns det tre repliker av distributionen som delar samma PVC.
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-volume-rwx Bound pvc-32f0717e-6b63-4d64-a458-5be4ffe21d37 3Gi RWX nexus-shared 6s
# kubectl get pods -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-deploy-rwx-fdb8f49c-86pv4 1/1 Running 0 18s 10.245.224.140 nexus-cluster-6a8c4018-agentpool1-md-s2dh7 <none> <none>
test-deploy-rwx-fdb8f49c-9zsjf 1/1 Running 0 18s 10.245.126.74 nexus-cluster-6a8c4018-agentpool1-md-27nw4 <none> <none>
test-deploy-rwx-fdb8f49c-wdgw7 1/1 Running 0 18s 10.245.231.75 nexus-cluster-6a8c4018-agentpool2-md-vhhv6 <none> <none>
Det kan observeras från nedanstående utdata att alla poddar skriver till samma PVC.
# kubectl exec test-deploy-rwx-fdb8f49c-86pv4 -- cat /mnt/hostname.txt
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-86pv4
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-9zsjf
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-wdgw7
Thu Nov 9 21:51:42 UTC 2023 -- test-deploy-rwx-fdb8f49c-86pv4
# kubectl exec test-deploy-rwx-fdb8f49c-9zsjf -- cat /mnt/hostname.txt
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-86pv4
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-9zsjf
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-wdgw7
Thu Nov 9 21:51:42 UTC 2023 -- test-deploy-rwx-fdb8f49c-86pv4
# kubectl exec test-deploy-rwx-fdb8f49c-wdgw7 -- cat /mnt/hostname.txt
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-86pv4
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-9zsjf
Thu Nov 9 21:51:41 UTC 2023 -- test-deploy-rwx-fdb8f49c-wdgw7
Thu Nov 9 21:51:42 UTC 2023 -- test-deploy-rwx-fdb8f49c-86pv4
Volymstorleksgränser och kapacitetshantering
Datorer som skapats med nexus-volym och nexus-shared har minsta och högsta anspråksstorlekar.
Lagringsklass | Minsta PVC-storlek | Maximal PVC-storlek |
---|---|---|
nexus-volym | 1 MiB | 12 TiB |
nexus-delad | Ingen | 1 TiB |
Viktigt!
Volymer som når sin förbrukningsgräns orsakar fel om diskutrymme på de arbetsbelastningar som använder dem. Du måste se till att du etablerar lämpliga volymstorlekar för dina arbetsbelastningskrav. Du måste övervaka både lagringsinstallationen och alla NFS-servrar för deras procentuella lagringsförbrukning. Du kan göra detta med hjälp av de mått som beskrivs i listan över tillgängliga mått.
- Både nexus-volume och nexus-shared PVCs har sin begärda lagringskapacitet framtvingas som en förbrukningsgräns. En volym kan inte förbruka mer lagringsutrymme än den associerade PVC-begäran.
- Alla fysiska volymer är tunnetablerade. Du måste övervaka den totala lagringsförbrukningen på lagringsinstallationen och utföra underhållsåtgärder för att frigöra lagringsutrymme om det behövs.
- En pvc-etableringsbegäran för nexus-volym misslyckas om den begärda storleken är mindre än den minsta eller mer än den maximala volymstorlek som stöds.
- Nexus-delade volymer är logiskt tunnetablerade på den säkerhetskopierade NFS-servern. Den här NFS-servern har en fast kapacitet på 1 TiB.
- En nexus-delad PVC kan etableras trots att du begär mer än 1 TiB lagring, men endast 1 TiB kan användas.
- Det är möjligt att etablera en uppsättning datorer där summan av kapacitetsbegäranden är större än 1 TiB. Förbrukningsgränsen på 1 TiB gäller dock. uppsättningen med associerade PV:er får inte förbruka mer än 1 TiB lagringsutrymme.
Status för lagringsinstallation
Följande egenskaper återspeglar drifttillståndet för en lagringsenhet:
Status
anger tillståndet som härlett från lagringsinstallationen. Tillståndet kan varaAvailable
,Error
ellerProvisioning
.Provisioning State
tillhandahåller lagringsinstallationens aktuella etableringstillstånd. Etableringstillståndet kan varaSucceeded
,Failed
ellerInProgress
.Capacity
ger den totala och använda kapaciteten för lagringsinstallationen.Remote Vendor Management
anger om fjärrleverantörshantering är aktiverat eller inaktiverat för lagringsinstallationen.
Åtgärder för lagringsinstallation
- Lista Lagringsenheter: Lista lagringsenheter i den angivna resursgruppen eller prenumerationen.
- Visa lagringsinstallation: Hämta egenskaper för den angivna lagringsinstallationen.
- Uppdatera lagringsinstallation: Uppdatera egenskaper eller taggar för den angivna lagringsinstallationen.
- Aktivera/inaktivera hantering av fjärrleverantörer för lagringsinstallation: Aktivera eller inaktivera fjärrleverantörshantering för den angivna lagringsinstallationen.
Kommentar
Kunder kan inte skapa eller ta bort lagringsenheter direkt. Dessa resurser skapas endast som förverkligande av klusterlivscykeln. Implementeringen blockerar skapande- eller borttagningsbegäranden från alla användare och tillåter endast interna/programdrivna skapande- eller borttagningsåtgärder.