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 lehet Available, Errorvagy Provisioning.

  • Provisioning State a tárolóberendezés aktuális kiépítési állapotát biztosítja. A kiépítési állapot lehet Succeeded, Failedvagy InProgress.

  • 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é.