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.
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 bisaAvailable
, ,Error
atauProvisioning
.Provisioning State
menyediakan status provisi appliance penyimpanan saat ini. Status provisi dapat berupaSucceeded
,Failed
, atauInProgress
.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.