(модуль) хранилища Оператора Azure Nexus
Оператор Azure Nexus основан на базовых конструкциях, таких как вычислительные серверы, (модуль) хранилища и сетевые устройства структуры. (модуль) хранилища Оператора Azure Nexus представляют постоянные (модуль) хранилища на стойке.
Каждый (модуль) хранилища содержит несколько устройств хранения, которые агрегируются для предоставления одного пула носителей. Затем этот пул носителей вырезается на несколько томов, которые отображаются на вычислительных серверах в виде блочных устройств хранения. Вычислительные серверы могут использовать эти блочные устройства хранения в качестве постоянного хранилища для рабочих нагрузок. Каждый кластер Оператора Azure Nexus подготавливается с одним хранилищем (модуль), совместно используемым для всех рабочих нагрузок клиента.
Хранилище (модуль) в экземпляре Оператора Azure Nexus представлено как ресурс Azure. Операторы получают доступ к просмотру атрибутов, как и любой другой ресурс Azure.
Классы хранилища Kubernetes
Стек Kubernetes для оператора Azure Nexus предлагает два типа хранилища. Операторы выбирают их с помощью механизма Kubernetes служба хранилища Class.
служба хранилища Class: nexus-volume
Механизм хранения по умолчанию, nexus-volume, является предпочтительным вариантом для большинства пользователей. Он обеспечивает самые высокие уровни производительности и доступности. Тем не менее тома нельзя совместно использовать между несколькими рабочими узлами. Операторы могут получать доступ к этим томам и управлять ими с помощью API Azure и портала через ресурс тома.
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
служба хранилища Class: nexus-shared
В ситуациях, когда требуется общая файловая система, доступен класс хранилища nexus-shared . Этот класс хранилища предоставляет общее решение для хранения, позволяя нескольким модулям pod в одном кластере Nexus Kubernetes одновременно получать доступ к одному и тому же тому. Класс хранилища nexus-shared поддерживается службой хранилища NFS. Эта служба хранилища NFS (пул носителей в настоящее время ограничена максимальным размером 1TiB) доступна для каждой облачной сети служб (CSN). Любой кластер Nexus Kubernetes, подключенный к CSN, может подготавливать постоянный том из этого общего пула носителей. Nexus-shared поддерживает режимы доступа для чтения один раз (RWO) и чтения много операций записи (RWX). Это означает, что приложения рабочей нагрузки могут использовать любой из этих режимов доступа для доступа к общему хранилищу.
Хотя для большинства приложений достаточно производительности и доступности общего доступа к nexus , рекомендуется, чтобы рабочие нагрузки с тяжелыми требованиями ввода-вывода использовали параметр nexus-volume для оптимальной производительности.
Чтение однократной записи (RWO)
В режиме записи один раз (RWO) общий том nexus может быть подключен только одним узлом или заявителем одновременно. Режим доступа ReadWriteOnce по-прежнему позволяет нескольким модулям pod получить доступ к тому, когда модули pod выполняются на одном узле.
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
Чтение большого количества операций записи (RWX)
В режиме чтения много операций записи (RWX) общий том nexus может быть подключен несколькими узлами или претендентами одновременно.
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
Примеры
Чтение однократной записи (RWO) с классом хранилища nexus-volume
Приведенный ниже манифест создает StatefulSet с PersistentVolumeClaimTemplate с помощью класса хранилища nexus-volume в режиме 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
Каждый модуль pod StatefulSet будет иметь один объект 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
Чтение большого количества операций записи (RWX) с классом хранилища nexus-shared
Приведенный ниже манифест создает развертывание с помощью PersistentVolumeClaim (PVC) с использованием класса хранилища nexus-shared в режиме ReadWriteMany. Создание ПВХ совместно используется всеми модулями pod развертывания и может использоваться для одновременного чтения и записи всех из них.
---
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
...
После применения будет три реплика развертывания совместного использования одного и того же ПВХ.
# 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>
Он может наблюдаться из приведенных ниже выходных данных, что все модули pod записываются в один и тот же ПВХ.
# 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
состояние служба хранилища (модуль)
Следующие свойства отражают рабочее состояние (модуль) хранилища:
Status
указывает состояние, производное от (модуль) хранилища. Состояние может бытьAvailable
,Error
илиProvisioning
.Provisioning State
предоставляет текущее состояние подготовки (модуль) хранилища. Состояние подготовки может бытьSucceeded
,Failed
илиInProgress
.Capacity
предоставляет общую и используемую емкость хранилища (модуль).Remote Vendor Management
указывает, включена или отключена ли удаленное управление поставщиками для (модуль) хранилища.
операции служба хранилища (модуль)
- Список служба хранилища устройств: список (модуль) хранилища в предоставленной группе ресурсов или подписке.
- Отображение устройства служба хранилища: получение свойств предоставленного хранилища (модуль).
- Обновление устройства служба хранилища: обновление свойств или тегов предоставленного хранилища (модуль).
- Включение и отключение управления удаленными поставщиками для устройства служба хранилища: включение или отключение удаленного управления поставщиками для предоставленного хранилища (модуль).
Примечание.
Клиенты не могут напрямую создавать или удалять (модуль) хранилища. Эти ресурсы создаются только в качестве реализации жизненного цикла кластера. Реализация блокирует запросы на создание или удаление от любого пользователя, и позволяет выполнять только внутренние или управляемые приложением операции создания или удаления.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по