Azure Operator Nexus tárolóberendezés
Az Azure Operator Nexus olyan alapvető szerkezetekre épül, mint a számítási kiszolgálók, a tárolóberendezések és a hálózati hálóeszközök. Az Azure Operator Nexus tárolóberendezései állandó tárolóberendezéseket jelölnek az állványon.
Minden tárolóberendezés több tárolóeszközt tartalmaz, amelyek összesítve egyetlen tárolókészletet biztosítanak. Ez a tárolókészlet ezután több kötetbe van faragva, amelyek blokktároló-eszközökként jelennek meg a számítási kiszolgálók számára. A számítási kiszolgálók ezeket a blokktároló eszközöket használhatják állandó tárolóként a számítási feladataikhoz. Minden Azure Operator Nexus-fürt egyetlen tárolóberendezéssel van kiépítve, amely az összes bérlői számítási feladatban meg van osztva.
Az Azure Operator Nexus-példányban található tárolóberendezés Azure-erőforrásként jelenik meg. Az operátorok minden más Azure-erőforráshoz hasonlóan hozzáférhetnek az attribútumaihoz.
Kubernetes Storage-osztályok
Az Azure Operator Nexus szoftver kubernetes verem kétféle tárolót kínál. Az operátorok a Kubernetes StorageClass mechanizmuson keresztül választják ki őket.
StorageClass: nexus-volume
A legtöbb felhasználó számára az alapértelmezett tárolási mechanizmus, a nexus-volume az előnyben részesített választás. A legmagasabb szintű teljesítményt és rendelkezésre állást biztosítja. A kötetek azonban nem oszthatók meg egyszerre több feldolgozó csomóponton. Az operátorok az Azure API-val és a portállal érhetik el és kezelhetik ezeket a köteteket a köteterőforráson keresztül.
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 által megosztott
Olyan helyzetekben, amikor megosztott fájlrendszerre van szükség, a nexus-megosztott tárolási osztály elérhető. Ez a tárolási osztály egy megosztott tárolási megoldást biztosít, ha több pod egyidejű hozzáférését és azonos kötet megosztását teszi lehetővé. Ezek a kötetek NFS Storage típusúak (jelenleg legfeljebb 1 TB méretűek), amelyeket a kubernetes-csomópontok állandó kötetként érnek el. A Nexus által megosztott verzió támogatja az Egyszer írás (RWO) és a Több írás írása (RWX) hozzáférési módot is. Ez azt jelenti, hogy a számítási feladatok alkalmazásai bármelyik hozzáférési módot használhatják a tárterület eléréséhez.
Bár a nexusok által megosztott teljesítmény és rendelkezésre állás a legtöbb alkalmazáshoz elegendő, javasoljuk, hogy a nagy I/O-követelményekkel rendelkező számítási feladatok az optimális teljesítmény érdekében használják a nexus-kötet lehetőséget.
Írás egyszer olvasása (RWO)
Olvasási egyszer (RWO) módban a nexus által megosztott kötetet egyszerre csak egy csomópont vagy igénylő csatlakoztathatja. A ReadWriteOnce hozzáférési mód továbbra is lehetővé teszi, hogy több pod is hozzáférjen a kötethez, ha a podok ugyanazon a csomóponton futnak.
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
Írási szám olvasása (RWX)
A Több írás olvasása (RWX) módban a nexus által megosztott kötetet egyszerre több csomópont vagy igénylő is csatlakoztathatja.
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
Példák
Írás egyszer olvasása (RWO) nexus-volume storage osztálysal
Az alábbi jegyzékfájl létrehoz egy StatefulSet-et a PersistentVolumeClaimTemplate-tal a Nexus-volume storage osztály használatával ReadWriteOnce módban.
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
A StatefulSet minden podján létrejön egy PersistentVolumeClaim.
# 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) with nexus-shared storage class
Az alábbi jegyzék egy PersistentVolumeClaim (PVC) alapú üzembe helyezést hoz létre a Nexus által megosztott tárolási osztály használatával ReadWriteMany módban. A létrehozott PVC-t az üzembe helyezés összes podja megosztja, és mind egyszerre olvasható és írható.
---
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
...
Az alkalmazás után az üzembe helyezés három replikája lesz ugyanazzal a PVC-vel.
# 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>
Az alábbi kimenetből megfigyelhető, hogy minden pod ugyanabba a PVC-be ír.
# 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
Tárolóberendezés állapota
A következő tulajdonságok a tárolóberendezés működési állapotát tükrözik:
Status
a tárolóberendezésből származó állapotot jelzi. Az állapot lehetAvailable
,Error
vagyProvisioning
.Provisioning State
a tárolóberendezés aktuális kiépítési állapotát biztosítja. A kiépítési állapot lehetSucceeded
,Failed
vagyInProgress
.Capacity
biztosítja a tárolóberendezés teljes és felhasznált kapacitását.Remote Vendor Management
azt jelzi, hogy a távoli szállítói felügyelet engedélyezve van-e vagy le van-e tiltva a tárolóberendezés esetében.
A tárolóberendezés műveletei
- Tárolóberendezések listázása: Tárolóberendezések listázása a megadott erőforráscsoportban vagy előfizetésben.
- Tárolóberendezés megjelenítése: A megadott tárolóberendezés tulajdonságainak lekérése.
- Tárolóberendezés frissítése: A megadott tárolóberendezés tulajdonságainak vagy címkéinek frissítése.
- Tárolóberendezés távoli szállítói felügyeletének engedélyezése/letiltása: A megadott tárolóberendezés távoli szállítói felügyeletének engedélyezése vagy letiltása.
Feljegyzés
Az ügyfelek nem hozhatnak létre vagy törölhetnek közvetlenül tárolóberendezéseket. Ezek az erőforrások csak a fürt életciklusának megvalósításaként jönnek létre. Az implementáció letiltja a felhasználóktól érkező létrehozási vagy törlési kérelmeket, és csak belső/alkalmazásalapú létrehozási vagy törlési műveleteket tesz lehetővé.