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.

Penting

Azure Operator Nexus tidak mendukung volume ephemeral. Nexus merekomendasikan bahwa mekanisme penyimpanan volume persisten yang dijelaskan dalam dokumen ini digunakan untuk semua volume beban kerja karena ini memberikan tingkat performa dan ketersediaan tertinggi. Semua penyimpanan di Azure Operator Nexus disediakan oleh appliance penyimpanan. Tidak ada dukungan untuk penyimpanan yang disediakan oleh disk mesin baremetal.

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 yang sangat tersedia 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 yang sangat tersedia. Layanan penyimpanan NFS ini (kumpulan penyimpanan saat ini terbatas pada ukuran maksimum 1 TiB) tersedia per Cloud Service Network (CSN). Layanan penyimpanan NFS disebarkan secara otomatis pada pembuatan sumber daya 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.

Diagram yang menggambarkan bagaimana nexus-shared menyediakan volume untuk beban kerja di Kluster Kubernetes Nexus

Gambar: Volume Bersama Nexus

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), hanya satu simpul atau penggerak yang dapat memasang volume yang dibagikan nexus sekaligus. 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 Baca Tulis Banyak (RWX), beberapa simpul atau penggerak dapat memasang volume yang dibagikan nexus 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

Contoh manifes 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 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, 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 ditulis 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

Batas ukuran volume dan manajemen kapasitas

PVC yang dibuat menggunakan nexus-volume dan nexus-shared memiliki ukuran klaim minimum dan maksimum.

Kelas Penyimpanan Ukuran PVC Minimum Ukuran PVC Maksimum
nexus-volume 1 MiB 12 TiB
nexus-shared Tidak 1 TiB

Penting

Volume yang mencapai batas konsumsinya akan menyebabkan kesalahan ruang disk pada beban kerja yang mengonsumsinya. Anda harus memastikan bahwa Anda menyediakan ukuran volume yang sesuai untuk persyaratan beban kerja Anda. Anda harus memantau appliance penyimpanan dan semua server NFS untuk persentase konsumsi penyimpanannya. Anda dapat melakukan ini menggunakan metrik yang didokumentasikan dalam daftar metrik yang tersedia.

  • PVC nexus-volume dan nexus-shared memiliki kapasitas penyimpanan yang diminta diberlakukan sebagai batas konsumsi. Volume tidak dapat menggunakan lebih banyak penyimpanan daripada permintaan PVC terkait.
  • Semua volume fisik disediakan tipis. Anda harus memantau total konsumsi penyimpanan pada appliance penyimpanan Anda dan melakukan operasi pemeliharaan untuk mengosongkan ruang penyimpanan jika perlu.
  • Permintaan provisi PVC nexus-volume gagal jika ukuran yang diminta kurang dari ukuran volume minimum atau lebih dari ukuran volume maksimum yang didukung.
  • Volume yang dibagikan Nexus secara logis disediakan tipis di server NFS yang mendukung. Server NFS ini memiliki kapasitas tetap 1 TiB.
    • PVC yang dibagikan nexus dapat disediakan meskipun meminta lebih dari 1 TiB penyimpanan, namun, hanya 1 TiB yang dapat dikonsumsi.
    • Dimungkinkan untuk menyediakan sekumpulan PVC di mana jumlah permintaan kapasitas lebih besar dari 1 TiB. Namun, batas konsumsi 1 TiB berlaku; kumpulan PV terkait mungkin tidak menggunakan lebih dari 1 TiB penyimpanan.

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.