Azure Container Storage'da çok bölgeli depolama yedekliliğini etkinleştirme

Azure Container Storage ile alanlar arası yedekli depolama (ZRS) veya yerel olarak yedekli depolama (LRS) kullanarak durum bilgisi olan uygulama kullanılabilirliğini geliştirebilirsiniz. Dayanıklılık ve performans gereksinimlerinize bağlı olarak, açık bölge yerleştirme için LRS'yi veya üç kullanılabilirlik bölgesinde zaman uyumlu çoğaltma için ZRS'yi seçin.

Yedeklilik modeli seçme

Yerel olarak yedekli depolama (LRS):LRS ile Azure, her Elastik SAN'ın üç kopyasını tek bir veri merkezinde depolar. Bu yedeklilik, başarısız disk gibi donanım hatalarına karşı koruma sağlar. Bu veri merkezinde bir olağanüstü durum oluşursa, tüm çoğaltmalar kaybolabilir veya kullanılamaz.

Alanlar arası yedekli depolama (ZRS): ZRS ile Azure, her Elastik SAN'ın üç kopyasını aynı bölgedeki üç ayrı kullanılabilirlik alanında depolar. Yazma işlemleri eşzamanlı. Yazma işlemi, yalnızca üç kopyanın tümü güncellendikten sonra tamamlanır.

Önkoşullar

  • Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.

  • Bu makale, Azure CLI sürüm v2.83.0 veya üzerini gerektirir. Daha fazla bilgi için bkz. Azure CLI'yi yükleme. Sorun yaşarsanız aks-preview gibi uzantıları devre dışı bırakın. Uzantıları gerektiği gibi yükleyin veya güncelleştirin:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (Yalnızca elastik SAN)
  • Kubernetes komut satırı istemcisine ihtiyacınız vardır. kubectl Azure Cloud Shell kullanıyorsanız zaten yüklüdür. komutunu çalıştırarak az aks install-cli yerel olarak yükleyebilirsiniz.

  • Hedef bölgenizin Azure Container Storage bölgelerinde desteklenip desteklenmediğini denetleyin.

  • Elastik SAN'ı abonelikte ilk kez kullanıyorsanız şu tek seferlik kayıt komutunu çalıştırın:

    az provider register --namespace Microsoft.ElasticSan
    
  • Bir bölgede ZRS yeni etkinleştirildiğinde, Azure Container Storage'ın SAN hedeflerini dağıtabilmesi için abonelik düzeyi özellik bayrağı kaydetmeniz gerekebilir:

    az feature register \
    --namespace Microsoft.ElasticSan \
    --name EnableElasticSANTargetDeployment
    
  • Bölgenin seçtiğiniz yedeklilik seçeneğini desteklediğini doğrulayın. Geçerli Elastik SAN bölgesi kullanılabilirliğine bakın.

Yerel olarak yedekli depolama ile StorageClass oluşturma

Bölge belirtmeden LRS SKU'su kullanma

Bir bölge bölgeleri destekliyorsa ve StorageClass'ta bir bölge belirtmezseniz, Azure Container Storage varsayılan olarak bölge 1 olarak belirlenir.

gibi storageclass.yamlbir YAML bildirim dosyası oluşturun ve aşağıdaki belirtimi kullanın.

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

LRS SKU'su kullanma ve bölge belirtme

Kullanılabilirlik alanlarını destekleyen bölgelerde LRS Elastik SAN oluştururken tek bir bölge kullanın. Bölgeleri olmayan bölgelerde doğrulama hatalarını önlemek için parametresini atlar zones .

Bölge sabitlemeli LRS için zamanlayıcı podu belirtilen bölgedeki bir düğüme yerleştirir ve kalıcı birim (PV) ilgili bölgenin SAN'sına bağlanır. LRS birimlerine herhangi bir bölgeden erişilebildiği için Azure Container Storage bölgeler arası ekleri kısıtlamaz. bölümü, allowedTopologies PV'nin LRS SAN ile aynı bölgedeki bir düğüme bağlanmasını sağlar.

gibi storageclass.yamlbir YAML bildirim dosyası oluşturun ve aşağıdaki belirtimi kullanın.

# 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

Bölgeye göre yedekli depolama ile bir StorageClass oluşturun.

Azure Container Storage varsayılan olarak üç bölgeyi de içerdiği için bölgeleri belirtmeniz gerekmez. Alanı ayarlarsanız zones üç bölgeyi de "1,2,3" olarak listeleyin.

gibi storageclass.yamlbir YAML bildirim dosyası oluşturun ve aşağıdaki belirtimi kullanın.

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

StorageClass oluşturma

kubectl apply -f storageclass.yaml

StorageClass'ın oluşturulduğunu doğrulayın:

kubectl get storageclass <storage-class-name>

Aşağıdakine benzer bir çıktı görmeniz gerekir:

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

Kalıcı birim talebi oluştur

gibi acstor-pvc.yamlbir YAML bildirim dosyası oluşturun. PVC name değeri herhangi bir değer olabilir. Önceki adımlarda oluşturduğunuz StorageClass adını kullanın.

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

PVC'yi oluşturmak için manifesti uygulayın.

kubectl apply -f acstor-pvc.yaml

Aşağıdakine benzer bir çıktı görmeniz gerekir:

persistentvolumeclaim/managedpvc created

Pod kurma ve kalıcı birim bağlama

gibi acstor-pod.yamlbir YAML bildirim dosyası oluşturun.

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

Pod oluşturmak için manifest dosyasını uygulayın.

kubectl apply -f acstor-pod.yaml

Aşağıdakine benzer bir çıktı görmeniz gerekir:

pod/esan-app created

PV ve StorageClass'ı doğrulayın:

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

Elastik SAN bölge listesiyle birimler için bölgesel destek ve yedeklilik modelini onaylayın.

Ayrıca bkz.