Teilen über


Aktivieren der Multizonen-Speicherredundanz im Azure Container Storage

Mit Azure Container Storage können Sie die zustandsbehaftete Anwendungsverfügbarkeit mithilfe von zonenredundanten Speicher (ZRS) oder lokal redundantem Speicher (LRS) verbessern. Wählen Sie LRS mit expliziter Zonenplatzierung oder ZRS für die synchrone Replikation über drei Verfügbarkeitszonen aus, basierend auf Ihren Resilienz- und Leistungsanforderungen.

Auswählen eines Redundanzmodells

Lokal redundanter Speicher (LRS): Mit LRS speichert Azure drei Kopien jedes Elastic SAN in einem einzigen Rechenzentrum. Diese Redundanz schützt vor Hardwarefehlern wie einem fehlerhaften Datenträger. Wenn ein Notfall in diesem Rechenzentrum auftritt, können alle Replikate verloren gehen oder nicht verfügbar sein.

Zonenredundanter Speicher (ZRS): Mit ZRS speichert Azure drei Kopien jedes Elastic SAN in drei unterschiedlichen Verfügbarkeitszonen in derselben Region. Schreibvorgänge sind synchron. Der Schreibvorgang wird erst abgeschlossen, nachdem alle drei Replikate aktualisiert wurden.

Voraussetzungen

  • Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.

  • Für diesen Artikel ist die Azure CLI-Version v2.83.0 oder höher erforderlich. Weitere Informationen finden Sie unter Installieren der Azure CLI. Deaktivieren Sie Erweiterungen wie aks-preview, wenn Probleme auftreten. Installieren oder Aktualisieren von Erweiterungen nach Bedarf:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (Nur elastisch SAN)
  • Sie benötigen den Kubernetes-Befehlszeilenclient. kubectl Sie ist bereits installiert, wenn Sie Azure Cloud Shell verwenden. Sie können es lokal installieren, indem Sie den az aks install-cli Befehl ausführen.

  • Überprüfen Sie, ob Ihre Zielregion in Azure Container Storage-Regionen unterstützt wird.

  • Wenn Sie Elastic SAN zum ersten Mal im Abonnement verwenden, führen Sie diesen einmaligen Registrierungsbefehl aus:

    az provider register --namespace Microsoft.ElasticSan
    
  • Wenn ZRS in einer Region neu aktiviert ist, müssen Sie möglicherweise ein Feature-Flag auf Abonnementebene registrieren, damit Azure Container Storage SAN-Ziele bereitstellen kann:

    az feature register \
    --namespace Microsoft.ElasticSan \
    --name EnableElasticSANTargetDeployment
    
  • Stellen Sie sicher, dass die Region Ihre ausgewählte Redundanzoption unterstützt. Sehen Sie sich die aktuelle Verfügbarkeit der Elastic SAN-Region an.

Erstellen einer StorageClass mit lokal redundantem Speicher

Verwenden einer LRS-SKU ohne Angabe einer Zone

Wenn eine Region Zonen unterstützt und Sie keine Zone in der StorageClass angeben, wird der Azure-Containerspeicher standardmäßig auf Zone 1 festgelegt.

Erstellen Sie eine YAML-Manifestdatei wie storageclass.yaml und verwenden Sie dann die folgende Spezifikation.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: esan-lrs-default
provisioner: san.csi.azure.com
parameters:
  skuName: Premium_LRS
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

Verwenden einer LRS-SKU und Angeben einer Zone

Verwenden Sie eine einzelne Zone, wenn Sie ein LRS Elastic SAN in Regionen erstellen, die Verfügbarkeitszonen unterstützen. Lassen Sie in Regionen ohne Zonen den zones Parameter weg, um Überprüfungsfehler zu vermeiden.

Bei LRS mit Zonenanheftung platziert der Scheduler den Pod auf einem Knoten in der angegebenen Zone, und das persistente Volume (PV) wird an das SAN der entsprechenden Zone gebunden. Auf LRS-Volumes kann über eine beliebige Zone zugegriffen werden, sodass Azure Container Storage keine zonenübergreifende Anbindung einschränkt. Der allowedTopologies Abschnitt stellt sicher, dass die PV an einen Knoten in derselben Zone wie das LRS SAN gebunden wird.

Erstellen Sie eine YAML-Manifestdatei wie storageclass.yaml und verwenden Sie dann die folgende Spezifikation.

# LRS with a zone (2)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: esan-lrs-zone2
provisioner: san.csi.azure.com
parameters:
  skuName: Premium_LRS
  zones: "2"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
# Optional:
allowedTopologies:
  - matchLabelExpressions:
      - key: topology.kubernetes.io/zone
        values:
          - canadacentral-2

Erstellen einer StorageClass mit zonenredundanten Speicher

Sie müssen keine Zonen angeben, da Azure Container Storage standardmäßig auf alle drei Zonen festgelegt ist. Wenn Sie das zones Feld festlegen, listen Sie alle drei Zonen als "1,2,3" auf.

Erstellen Sie eine YAML-Manifestdatei wie storageclass.yaml und verwenden Sie dann die folgende Spezifikation.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: esan-zrs-zones
provisioner: san.csi.azure.com
parameters:
  skuName: Premium_ZRS
  zones: "1,2,3" # optional
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

Erstellen der StorageClass

kubectl apply -f storageclass.yaml

Überprüfen Sie, ob die StorageClass erstellt wird:

kubectl get storageclass <storage-class-name>

Eine ähnliche Ausgabe wie die folgende sollte angezeigt werden:

NAME             PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
esan-zrs-zones   san.csi.azure.com    Delete          WaitForFirstConsumer   true                   10s

Erstellen eines Anspruchs auf ein persistentes Volume

Erstellen Sie eine YAML-Manifestdatei wie acstor-pvc.yaml. Der PVC-Wert name kann ein beliebiger Wert sein. Verwenden Sie den StorageClass-Namen, den Sie in den vorherigen Schritten erstellt haben.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: managedpvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: esan-zrs-zones # or esan-lrs-zone2, esan-lrs-default

Wenden Sie das Manifest an, um das PVC zu erstellen.

kubectl apply -f acstor-pvc.yaml

Eine ähnliche Ausgabe wie die folgende sollte angezeigt werden:

persistentvolumeclaim/managedpvc created

Bereitstellen eines Pods und Anfügen eines persistenten Volumes

Erstellen Sie eine YAML-Manifestdatei wie acstor-pod.yaml.

apiVersion: v1
kind: Pod
metadata:
  name: esan-app
spec:
  containers:
    - name: app
      image: mcr.microsoft.com/oss/nginx/nginx:1.25.2
      volumeMounts:
        - name: data
          mountPath: /data
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: managedpvc

Wenden Sie das Manifest an, um den Pod zu erstellen.

kubectl apply -f acstor-pod.yaml

Eine ähnliche Ausgabe wie die folgende sollte angezeigt werden:

pod/esan-app created

Überprüfen Sie die PV- und StorageClass:

kubectl get pv
kubectl describe sc esan-zrs-zones
kubectl describe sc esan-lrs-zone2

Bestätigen Sie das regionale Support- und Redundanzmodell für die Volumes mit der Liste der Elastic SAN-Regionen.

Weitere Informationen