Azure Operator Nexus-opslagapparaat
Azure Operator Nexus is gebouwd op basisconstructies zoals rekenservers, opslagapparaten en netwerkinfrastructuurapparaten. Azure Operator Nexus-opslagapparaten vertegenwoordigen permanente opslagapparaten in het rek.
Elk opslagapparaat bevat meerdere opslagapparaten, die worden samengevoegd om één opslaggroep te bieden. Deze opslaggroep wordt vervolgens uitgesneden in meerdere volumes, die worden gepresenteerd aan de rekenservers als blokopslagapparaten. De rekenservers kunnen deze blokopslagapparaten gebruiken als permanente opslag voor hun workloads. Elk Azure Operator Nexus-cluster wordt ingericht met één opslagapparaat dat wordt gedeeld in alle tenantworkloads.
Het opslagapparaat in een Azure Operator Nexus-exemplaar wordt weergegeven als een Azure-resource. Operators krijgen toegang om de kenmerken ervan weer te geven, zoals elke andere Azure-resource.
Kubernetes-opslagklassen
De Kubernetes-stack van De Azure Operator Nexus-software biedt twee typen opslag. Operators selecteren ze via het Kubernetes StorageClass-mechanisme.
StorageClass: nexus-volume
Het standaardopslagmechanisme, nexus-volume, is de voorkeurskeuze voor de meeste gebruikers. Het biedt de hoogste prestatie- en beschikbaarheidsniveaus. Volumes kunnen echter niet tegelijkertijd worden gedeeld over meerdere werkknooppunten. Operators kunnen deze volumes openen en beheren met behulp van de Azure-API en portal, via de volumeresource.
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
In situaties waarin een gedeeld bestandssysteem is vereist, is de nexus-gedeelde opslagklasse beschikbaar. Deze opslagklasse biedt een gedeelde opslagoplossing door meerdere pods in hetzelfde Nexus Kubernetes-cluster in te schakelen om gelijktijdig toegang te krijgen tot hetzelfde volume en hetzelfde volume te delen. De nexus-gedeelde opslagklasse wordt ondersteund door een NFS-opslagservice. Deze NFS-opslagservice (opslaggroep is momenteel beperkt tot een maximale grootte van 1TiB) is beschikbaar per CSN (Cloud Service Network). Elk Nexus Kubernetes-cluster dat is gekoppeld aan het CSN kan permanent volume inrichten vanuit deze gedeelde opslaggroep. Nexus-gedeeld ondersteunt zowel LSU-toegangsmodi (Read Write Once) als Read Write Many (RWX). Dit betekent dat de workloadtoepassingen gebruik kunnen maken van een van deze toegangsmodi voor toegang tot de gedeelde opslag.
Hoewel de prestaties en beschikbaarheid van nexus-gedeeld voldoende zijn voor de meeste toepassingen, raden we aan dat workloads met zware I/O-vereisten de optie nexus-volume gebruiken voor optimale prestaties.
Schrijfbewerkingen eenmaal lezen (RWO)
In de modus Read Write Once (RWO) kan het nexus-gedeelde volume slechts door één knooppunt of eiser tegelijk worden gekoppeld. Met de readWriteOnce-toegangsmodus hebben meerdere pods nog steeds toegang tot het volume wanneer de pods op hetzelfde knooppunt worden uitgevoerd.
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
Lezen veel (RWX)
In de modus Read Write Many (RWX) kan het nexus-gedeelde volume tegelijkertijd worden gekoppeld door meerdere knooppunten of eisers.
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
Voorbeelden
Read Write Once (RWO) met nexus-volumeopslagklasse
Het onderstaande manifest maakt een StatefulSet met PersistentVolumeClaimTemplate met behulp van de nexus-volumeopslagklasse in de ReadWriteOnce-modus.
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
Elke pod van de StatefulSet heeft één PersistentVolumeClaim gemaakt.
# 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
Read Write Many (RWX) met nexus-gedeelde opslagklasse
Het onderstaande manifest maakt een implementatie met een PersistentVolumeClaim (PVC) met behulp van de nexus-gedeelde opslagklasse in de readWriteMany-modus. Het PVC dat is gemaakt, wordt gedeeld door alle pods van de implementatie en kan worden gebruikt om ze allemaal tegelijkertijd te lezen en te schrijven.
---
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
...
Zodra dit is toegepast, zijn er drie replica's van de implementatie die hetzelfde PVC delen.
# 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>
Het kan worden waargenomen uit de onderstaande uitvoer dat alle pods in hetzelfde PVC schrijven.
# 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
Status van opslagapparaat
De volgende eigenschappen weerspiegelen de operationele status van een opslagapparaat:
Status
geeft de status aan die is afgeleid van het opslagapparaat. De status kanAvailable
zijn,Error
ofProvisioning
.Provisioning State
biedt de huidige inrichtingsstatus van het opslagapparaat. De inrichtingsstatus kanSucceeded
,Failed
ofInProgress
.Capacity
biedt de totale en gebruikte capaciteit van het opslagapparaat.Remote Vendor Management
geeft aan of extern leverancierbeheer is ingeschakeld of uitgeschakeld voor het opslagapparaat.
Bewerkingen van opslagapparaat
- Lijst met opslagapparaten: opslagapparaten weergeven in de opgegeven resourcegroep of het opgegeven abonnement.
- Opslagapparaat weergeven: Eigenschappen van het opgegeven opslagapparaat ophalen.
- Opslagapparaat bijwerken: werk eigenschappen of tags van het opgegeven opslagapparaat bij.
- Extern leverancierbeheer in- of uitschakelen voor opslagapparaat: schakel extern leverancierbeheer in of uit voor het opgegeven opslagapparaat.
Notitie
Klanten kunnen opslagapparaten niet rechtstreeks maken of verwijderen. Deze resources worden alleen gemaakt als de realisatie van de levenscyclus van het cluster. Implementatie blokkeert het maken of verwijderen van aanvragen van elke gebruiker en maakt alleen interne/toepassingsgestuurde creatie- of verwijderingsbewerkingen mogelijk.