Bagikan melalui


Appliance penyimpanan Azure Operator Nexus

Azure Operator Nexus dibangun di atas konstruksi dasar seperti server komputasi, peralatan penyimpanan, dan perangkat fabric jaringan. Appliance penyimpanan Azure Operator Nexus mewakili appliance penyimpanan persisten di rak.

Setiap appliance penyimpanan berisi beberapa perangkat penyimpanan, yang diagregasi untuk menyediakan satu kumpulan penyimpanan. Kumpulan penyimpanan ini kemudian diukir ke dalam beberapa volume, yang disajikan ke server komputasi sebagai perangkat penyimpanan blok. Server komputasi dapat menggunakan perangkat penyimpanan blok ini sebagai penyimpanan persisten untuk beban kerja mereka. Setiap kluster Azure Operator Nexus disediakan dengan satu appliance penyimpanan yang dibagikan di semua beban kerja penyewa.

Appliance penyimpanan dalam instans Azure Operator Nexus diwakili sebagai sumber daya Azure. Operator mendapatkan akses untuk melihat atributnya seperti sumber daya Azure lainnya.

Kelas penyimpanan Kubernetes

Tumpukan Kubernetes perangkat lunak Azure Operator Nexus menawarkan dua jenis penyimpanan. Operator memilihnya melalui mekanisme Kubernetes StorageClass.

StorageClass: nexus-volume

Mekanisme penyimpanan default, nexus-volume, adalah pilihan yang disukai untuk sebagian besar pengguna. Ini memberikan tingkat performa dan ketersediaan tertinggi. Namun, volume tidak dapat dibagikan secara bersamaan di beberapa simpul pekerja. Operator dapat mengakses dan mengelola volume ini dengan menggunakan Azure API dan portal, melalui sumber daya volume.

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: berbagi nexus

Dalam situasi di mana sistem file bersama diperlukan, kelas penyimpanan bersama nexus tersedia. Kelas penyimpanan ini menyediakan solusi penyimpanan bersama dengan mengaktifkan beberapa pod dalam kluster Nexus Kubernetes yang sama untuk mengakses dan berbagi volume yang sama secara bersamaan. Kelas penyimpanan bersama nexus didukung oleh layanan penyimpanan NFS. Layanan penyimpanan NFS ini (kumpulan penyimpanan saat ini terbatas pada ukuran maksimum 1TiB) tersedia per Cloud Service Network (CSN). Setiap kluster Nexus Kubernetes yang terpasang pada CSN dapat menyediakan volume persisten dari kumpulan penyimpanan bersama ini. Berbagi Nexus mendukung mode akses Read Write Once (RWO) dan Read Write Many (RWX). Artinya, aplikasi beban kerja dapat menggunakan salah satu mode akses ini untuk mengakses penyimpanan bersama.

Meskipun performa dan ketersediaan nexus-shared cukup untuk sebagian besar aplikasi, kami menyarankan agar beban kerja dengan persyaratan I/O berat menggunakan opsi nexus-volume untuk performa optimal.

Baca Tulis Sekali (RWO)

Dalam mode Baca Tulis Sekali (RWO), volume yang dibagikan nexus hanya dapat dipasang oleh satu simpul atau pengguntut pada satu waktu. Mode akses ReadWriteOnce masih memungkinkan beberapa pod untuk mengakses volume ketika pod berjalan pada node yang sama.

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

Baca Tulis Banyak (RWX)

Dalam mode Read Write Many (RWX), volume yang dibagikan nexus dapat dipasang oleh beberapa simpul atau pengguntut secara bersamaan.

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

Contoh

Baca Tulis Sekali (RWO) dengan kelas penyimpanan nexus-volume

Manifes di bawah ini membuat StatefulSet dengan PersistentVolumeClaimTemplate menggunakan kelas penyimpanan nexus-volume dalam mode ReadWriteOnce.

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

Setiap pod StatefulSet akan memiliki satu PersistentVolumeClaim yang dibuat.

# 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

Baca Tulis Banyak (RWX) dengan kelas penyimpanan bersama nexus

Manifes di bawah ini membuat Penyebaran dengan PersistentVolumeClaim (PVC) menggunakan kelas penyimpanan bersama nexus dalam mode ReadWriteMany. PVC yang dibuat dibagikan oleh semua pod penyebaran dan dapat digunakan untuk membaca dan menulis oleh semuanya secara bersamaan.

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

Setelah diterapkan, akan ada tiga replika penyebaran yang berbagi PVC yang sama.

# 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>

Ini dapat diamati dari output di bawah ini bahwa semua pod menulis ke dalam PVC yang sama.

# 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 appliance penyimpanan

Properti berikut mencerminkan status operasional appliance penyimpanan:

  • Status menunjukkan status sebagaimana berasal dari appliance penyimpanan. Statusnya bisa Available, , Erroratau Provisioning.

  • Provisioning State menyediakan status provisi appliance penyimpanan saat ini. Status provisi dapat berupa Succeeded, Failed, atau InProgress.

  • Capacity menyediakan total dan kapasitas yang digunakan dari appliance penyimpanan.

  • Remote Vendor Management menunjukkan apakah manajemen vendor jarak jauh diaktifkan atau dinonaktifkan untuk appliance penyimpanan.

Operasi appliance penyimpanan

  • Mencantumkan Peralatan Penyimpanan: Mencantumkan appliance penyimpanan di grup sumber daya atau langganan yang disediakan.
  • Tampilkan Storage Appliance: Mendapatkan properti appliance penyimpanan yang disediakan.
  • Memperbarui Storage Appliance: Memperbarui properti atau tag appliance penyimpanan yang disediakan.
  • Aktifkan/Nonaktifkan Manajemen Vendor Jarak Jauh untuk Storage Appliance: Mengaktifkan atau menonaktifkan manajemen vendor jarak jauh untuk appliance penyimpanan yang disediakan.

Catatan

Pelanggan tidak dapat membuat atau menghapus appliance penyimpanan secara langsung. Sumber daya ini dibuat hanya sebagai realisasi siklus hidup kluster. Implementasi memblokir permintaan pembuatan atau penghapusan dari pengguna mana pun, dan hanya memungkinkan operasi pembuatan atau penghapusan berbasis aplikasi/internal.