Partekatu bidez


Habilitación de la redundancia de almacenamiento de varias zonas en Azure Container Storage

Con Azure Container Storage, puede mejorar la disponibilidad de las aplicaciones con estado mediante el almacenamiento con redundancia de zona (ZRS) o el almacenamiento con redundancia local (LRS). Elija LRS con ubicación zonal explícita o ZRS para la replicación sincrónica en tres zonas de disponibilidad, en función de las necesidades de resistencia y rendimiento.

Elección de un modelo de redundancia

Almacenamiento con redundancia local (LRS): con LRS, Azure almacena tres copias de cada SAN elástico en un único centro de datos. Esta redundancia protege frente a errores de hardware, como un disco con errores. Si se produce un desastre en ese centro de datos, todas las réplicas se pueden perder o no estar disponibles.

Almacenamiento con redundancia de zona (ZRS): con ZRS, Azure almacena tres copias de cada SAN elástico en tres zonas de disponibilidad distintas de la misma región. Las operaciones de escritura son sincrónicas. La operación de escritura se completa solo después de que se actualicen las tres réplicas.

Requisitos previos

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

  • En este artículo se requiere la versión más reciente de la CLI de Azure. Consulte Cómo instalar la CLI de Azure. Si usa el entorno de Bash en Azure Cloud Shell, es probable que la versión más reciente ya esté instalada. Si tiene previsto ejecutar los comandos localmente en lugar de en Azure Cloud Shell, asegúrese de ejecutarlos con privilegios administrativos. Para más información, consulte Introducción a Azure Cloud Shell.

  • Necesitará el cliente de línea de comandos de Kubernetes, kubectl. Ya está instalado si usa Azure Cloud Shell o puede instalarlo localmente mediante la ejecución del comando az aks install-cli.

  • Compruebe si la región de destino es compatible con las regiones de Azure Container Storage.

  • Si usa Elastic SAN por primera vez en la suscripción, ejecute este comando de registro único:
az provider register --namespace Microsoft.ElasticSan
  • Cuando ZRS se habilita recientemente en una región, es posible que tenga que registrar una marca de característica de nivel de suscripción para que Azure Container Storage pueda implementar destinos SAN:
Register-AzProviderFeature -FeatureName EnableElasticSANTargetDeployment -ProviderNamespace Microsoft.ElasticSan
  • Compruebe que la región admite la opción de redundancia elegida. Consulte la disponibilidad actual de la región de Elastic SAN.

Creación de una clase StorageClass con almacenamiento con redundancia local

Uso de una SKU LRS sin especificar una zona

Si una región admite zonas y no especifica una zona en StorageClass, Azure Container Storage tiene como valor predeterminado la zona 1.

Cree un archivo de manifiesto YAML como storageclass.yamly, a continuación, use la especificación siguiente.

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

Usar una SKU LRS y especificar una zona

Use una sola zona al crear una SAN elástica de LRS en regiones que admitan zonas de disponibilidad. En regiones sin zonas, omita el zones parámetro para evitar errores de validación.

Para LRS con anclaje de zona, el programador coloca el pod en un nodo de la zona especificada y el volumen persistente (PV) se enlaza a la SAN de la zona correspondiente. Los volúmenes LRS son accesibles desde cualquier zona, por lo que Azure Container Storage no restringe los datos adjuntos entre zonas. La sección allowedTopologies garantiza que el PV se asocie a un nodo de la misma zona geográfica que la SAN de LRS.

Cree un archivo de manifiesto YAML como storageclass.yamly, a continuación, use la especificación siguiente.

# 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

Creación de una clase StorageClass con almacenamiento con redundancia de zona

No es necesario especificar zonas porque Azure Container Storage tiene como valor predeterminado las tres zonas. Si establece el zones campo, enumere las tres zonas como "1,2,3".

Cree un archivo de manifiesto YAML como storageclass.yamly, a continuación, use la especificación siguiente.

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

Creación de la clase StorageClass

kubectl apply -f storageclass.yaml

Compruebe que se ha creado storageClass:

kubectl get storageclass <storage-class-name>

Debería mostrarse una salida similar a esta:

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

Creación de una notificación de volumen persistente

Cree un archivo de manifiesto YAML como acstor-pvc.yaml. El valor de PVC name puede ser cualquier valor. Use el nombre storageClass que creó en los pasos anteriores.

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

Aplique el manifiesto para crear la PVC.

kubectl apply -f acstor-pvc.yaml

Debería mostrarse una salida similar a esta:

persistentvolumeclaim/managedpvc created

Implementar un pod y asociar un volumen persistente

Cree un archivo de manifiesto YAML como 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

Aplique el manifiesto para crear el pod.

kubectl apply -f acstor-pod.yaml

Debería mostrarse una salida similar a esta:

pod/esan-app created

Compruebe el PV y la StorageClass:

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

Confirme el soporte regional y el modelo de redundancia para los volúmenes con la lista de regiones de Elastic SAN.

Consulte también