Azure Operatör Nexus depolama gereci
Azure Operatör Nexus işlem sunucuları, depolama gereçleri ve ağ dokusu cihazları gibi temel yapıları temel alır. Azure Operatör Nexus depolama gereçleri, raf üzerindeki kalıcı depolama gereçlerini temsil eder.
Her depolama gereci, tek bir depolama havuzu sağlamak için toplanan birden çok depolama cihazı içerir. Bu depolama havuzu daha sonra işlem sunucularına blok depolama cihazları olarak sunulan birden çok birime oyulmuş olur. İşlem sunucuları, bu blok depolama cihazlarını iş yükleri için kalıcı depolama alanı olarak kullanabilir. Her Azure İşleci Nexus kümesi, tüm kiracı iş yükleri arasında paylaşılan tek bir depolama gereci ile sağlanır.
Azure Operatör Nexus örneğindeki depolama gereci bir Azure kaynağı olarak temsil edilir. Operatörler, diğer Azure kaynakları gibi özniteliklerini görüntüleme erişimine sahip olur.
Kubernetes depolama sınıfları
Azure Operatör Nexus yazılımı Kubernetes yığını iki tür depolama alanı sunar. İşleçler bunları Kubernetes StorageClass mekanizması aracılığıyla seçer.
Önemli
Azure Operatör Nexus kısa ömürlü birimleri desteklemez. Nexus, en yüksek performans ve kullanılabilirlik düzeylerini sağladığından, bu belgede açıklanan kalıcı birim depolama mekanizmalarının tüm iş yükü birimleri için kullanılmasını önerir. Azure Operatör Nexus'taki tüm depolama alanı, depolama gereci tarafından sağlanır. Baremetal makine diskleri tarafından sağlanan depolama desteği yoktur.
StorageClass: nexus-volume
Varsayılan depolama mekanizması olan nexus-volume, çoğu kullanıcı için tercih edilen seçenektir. En yüksek performans ve kullanılabilirlik düzeylerini sağlar. Ancak birimler birden çok çalışan düğümü arasında aynı anda paylaşılamaz. Operatörler, birim kaynağı üzerinden Azure API'sini ve portalını kullanarak bu birimlere erişebilir ve bunları yönetebilir.
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-shared
Paylaşılan dosya sisteminin gerekli olduğu durumlarda, nexus-shared depolama sınıfı kullanılabilir. Bu depolama sınıfı, aynı Nexus Kubernetes kümesindeki birden çok poda eşzamanlı olarak erişmesini ve aynı birimi paylaşmasını sağlayarak paylaşılan bir depolama çözümü sağlar. nexus-shared depolama sınıfı bir NFS depolama hizmeti tarafından desteklenir. Bu NFS depolama hizmeti (şu anda en fazla 1TiB boyutuyla sınırlı depolama havuzu) Bulut Hizmeti Ağı (CSN) başına kullanılabilir. CSN'ye bağlı tüm Nexus Kubernetes kümeleri bu paylaşılan depolama havuzundan kalıcı birim sağlayabilir. Nexus-shared hem Bir Kez Okuma (RWO) hem de Okuma Yazma Çok Yazma (RWX) erişim modlarını destekler. Bu, iş yükü uygulamalarının paylaşılan depolamaya erişmek için bu erişim modlarından birini kullanabildiği anlamına gelir.
Şekil: Nexus Paylaşılan Birimi
Nexus-shared'ın performansı ve kullanılabilirliği çoğu uygulama için yeterli olsa da, ağır G/Ç gereksinimleri olan iş yüklerinin en iyi performans için nexus-volume seçeneğini kullanmasını öneririz.
Bir Kez Yazma Okuma (RWO)
Bir Kez Okuma (RWO) modunda, nexus paylaşılan birimi aynı anda yalnızca bir düğüm veya talep eden tarafından bağlanabilir. ReadWriteOnce erişim modu, podlar aynı düğümde çalışırken birden çok pod'un birime erişmesine izin verir.
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
Read Write Many (RWX)
Read Write Many (RWX) modunda, nexus-shared birimi aynı anda birden çok düğüm veya talep eden tarafından bağlanabilir.
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
Örnekler
Nexus-volume depolama sınıfı ile Bir Kez Yazma (RWO) okuma
Aşağıdaki bildirim ReadWriteOnce modunda nexus-volume depolama sınıfını kullanarak PersistentVolumeClaimTemplate ile bir StatefulSet oluşturur.
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
StatefulSet'in her podunun bir PersistentVolumeClaim oluşturulur.
# 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
Nexus paylaşılan depolama sınıfı ile Çok Yazma (RWX) okuma
Aşağıdaki bildirim ReadWriteMany modunda nexus-shared depolama sınıfını kullanarak PersistentVolumeClaim (PVC) ile bir Dağıtım oluşturur. Oluşturulan PVC, dağıtımın tüm podları tarafından paylaşılır ve hepsi tarafından aynı anda okumak ve yazmak için kullanılabilir.
---
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
...
Uygulandıktan sonra, dağıtımın aynı PVC'yi paylaşan üç çoğaltması olacaktır.
# 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>
Aşağıdaki çıkışta tüm podların aynı PVC'ye yazdığı gözlemlenebilir.
# 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
Depolama gereci durumu
Aşağıdaki özellikler bir depolama gerecinin çalışma durumunu yansıtır:
Status
depolama aletinden türetilen durumu gösterir. Durum ,Error
veyaProvisioning
olabilirAvailable
.Provisioning State
depolama gerecinin geçerli sağlama durumunu sağlar. Sağlama durumu ,Failed
veyaInProgress
olabilirSucceeded
.Capacity
depolama gerecinin toplam ve kullanılan kapasitesini sağlar.Remote Vendor Management
, depolama gereci için uzak satıcı yönetiminin etkinleştirilip etkinleştirilmediğini veya devre dışı bırakılıp bırakılmadığını gösterir.
Depolama aleti işlemleri
- Depolama Gereçlerini Listeleme: Sağlanan kaynak grubu veya abonelikteki depolama gereçlerini listeleyin.
- Depolama Aletini Göster: Sağlanan depolama gerecinin özelliklerini alın.
- Depolama Aletini Güncelleştirme: Sağlanan depolama gerecinin özelliklerini veya etiketlerini güncelleştirin.
- Depolama Gereci için Uzak Satıcı Yönetimini Etkinleştirme/Devre Dışı Bırakma: Sağlanan depolama gereci için uzak satıcı yönetimini etkinleştirin veya devre dışı bırakın.
Not
Müşteriler depolama gereçlerini doğrudan oluşturamaz veya silemez. Bu kaynaklar yalnızca küme yaşam döngüsünün gerçekleştirilmesi olarak oluşturulur. Uygulama, herhangi bir kullanıcıdan gelen oluşturma veya silme isteklerini engeller ve yalnızca iç/uygulama temelli oluşturma veya silme işlemlerine izin verir.