Zařízení úložiště Nexus pro operátora Azure
Operátor Azure Nexus je založený na základních konstruktech, jako jsou výpočetní servery, zařízení úložiště a síťová zařízení infrastruktury. Zařízení úložiště Nexus operátora Azure představují trvalá úložiště na racku.
Každé zařízení úložiště obsahuje několik úložných zařízení, která jsou agregovaná tak, aby poskytovala jeden fond úložiště. Tento fond úložiště se pak vyřezá do několika svazků, které se předávají výpočetním serverům jako bloková úložiště. Výpočetní servery můžou tato bloková úložiště používat jako trvalé úložiště pro své úlohy. Každý cluster Azure Operator Nexus je zřízený s jedním zařízením úložiště, které je sdílené napříč všemi úlohami tenanta.
Zařízení úložiště v instanci Azure Operator Nexus je reprezentované jako prostředek Azure. Operátoři získají přístup k zobrazení jeho atributů jako jakýkoli jiný prostředek Azure.
Třídy úložiště Kubernetes
Software Kubernetes pro operátora Azure Nabízí dva typy úložiště. Operátory je vyberou prostřednictvím mechanismu Kubernetes StorageClass.
StorageClass: nexus-volume
Výchozí mechanismus úložiště, svazek nexus, je upřednostňovanou volbou pro většinu uživatelů. Poskytuje nejvyšší úroveň výkonu a dostupnosti. Svazky se ale nedají současně sdílet mezi několika pracovními uzly. Operátoři můžou přistupovat k těmto svazkům a spravovat je pomocí rozhraní AZURE API a portálu prostřednictvím prostředku svazku.
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
V situacích, kdy se vyžaduje sdílený systém souborů, je k dispozici třída úložiště typu nexus-shared . Tato třída úložiště poskytuje řešení sdíleného úložiště povolením více podů ve stejném clusteru Nexus Kubernetes pro souběžný přístup ke stejnému svazku a jejich sdílení. Třída úložiště typu nexus-shared je podporována službou úložiště NFS. Tato služba úložiště NFS (fond úložiště je aktuálně omezena na maximální velikost 1TiB) je dostupná pro síť cloudových služeb (CSN). Jakýkoli cluster Nexus Kubernetes připojený k CSN může zřídit trvalý svazek z tohoto sdíleného fondu úložiště. Nexus-shared podporuje režimy přístupu jen jednou pro čtení (RWO) i režimy pro čtení typu N (RWX). To znamená, že aplikace úloh můžou pro přístup ke sdílenému úložišti využívat některý z těchto režimů přístupu.
Přestože výkon a dostupnost sdíleného propojení jsou dostatečné pro většinu aplikací, doporučujeme, aby úlohy s náročnými vstupně-výstupními požadavky používaly možnost nexus-volume pro optimální výkon.
Čtení zápisu jednou (RWO)
V režimu čtení zápisu (RWO) je možné sdílený svazek nexus připojit pouze jedním uzlem nebo deklarantem najednou. Režim přístupu ReadWriteOnce stále umožňuje více podům přistupovat ke svazku, když pody běží na stejném uzlu.
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
Čtení zápisu mnoho (RWX)
V režimu mnoho čtení zápisu (RWX) lze sdílený svazek nexus připojit více uzly nebo deklarace identity současně.
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
Příklady
Čtení zápisu jednou (RWO) s třídou úložiště nexus-volume
Následující manifest vytvoří StatefulSet s PersistentVolumeClaimTemPlate pomocí třídy úložiště nexus-volume v režimu 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
Každý pod StatefulSet bude mít vytvořenou jednu PersistentVolumeClaim.
# 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
Čtení zápisu N (RWX) s třídou úložiště sdíleného propojením
Následující manifest vytvoří nasazení s PersistentVolumeClaim (PVC) pomocí třídy úložiště nexus-shared v režimu ReadWriteMany. Vytvořený PVC je sdílen všemi pody nasazení a lze je použít ke čtení a zápisu všemi z nich současně.
---
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
...
Po použití budou k dispozici tři repliky nasazení, které sdílejí stejný PVC.
# 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>
Z následujícího výstupu lze pozorovat, že všechny pody se zapisují do stejného PVC.
# 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
Stav zařízení úložiště
Následující vlastnosti odrážejí provozní stav zařízení úložiště:
Status
označuje stav odvozený ze zařízení úložiště. Stav může býtAvailable
,Error
neboProvisioning
.Provisioning State
poskytuje aktuální stav zřizování zařízení úložiště. Stav zřizování může býtSucceeded
,Failed
neboInProgress
.Capacity
poskytuje celkovou a využitou kapacitu úložného zařízení.Remote Vendor Management
označuje, jestli je pro zařízení úložiště povolená nebo zakázaná správa vzdáleného dodavatele.
Operace zařízení úložiště
- Seznam zařízení úložiště: Uveďte zařízení úložiště v poskytnuté skupině prostředků nebo předplatném.
- Zobrazit zařízení úložiště: Získejte vlastnosti poskytnutého úložného zařízení.
- Aktualizovat zařízení úložiště: Aktualizujte vlastnosti nebo značky poskytnutého zařízení úložiště.
- Povolení nebo zakázání správy vzdáleného dodavatele pro zařízení úložiště: Povolí nebo zakáže vzdálenou správu dodavatele pro poskytnuté zařízení úložiště.
Poznámka:
Zákazníci nemůžou přímo vytvářet ani odstraňovat zařízení úložiště. Tyto prostředky se vytvářejí pouze jako realizace životního cyklu clusteru. Implementace blokuje žádosti o vytvoření nebo odstranění od libovolného uživatele a umožňuje pouze interní nebo aplikace řízené operacemi vytváření nebo odstraňování.