Aracılığıyla paylaş


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.

Nexus Kubernetes Kümesindeki bir iş yükü için nexus-shared birimi sağlamayı gösteren diyagram

Ş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 , Errorveya ProvisioningolabilirAvailable.

  • Provisioning State depolama gerecinin geçerli sağlama durumunu sağlar. Sağlama durumu , Failedveya InProgressolabilirSucceeded.

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