Azure Container Storage ile birim anlık görüntülerinden yararlanma

Azure Container Storage, kapsayıcılar için oluşturulmuş bulut tabanlı bir birim yönetimi, dağıtımı ve düzenleme hizmetidir. Bu makalede, kalıcı birimin belirli bir zamandaki anlık görüntüsünün nasıl alınacağı ve yeni bir kalıcı birim talebi (PVC) ile nasıl geri yükleneceği gösterilmektedir.

Sınırlamalar

Yerel NVMe geçici diskleri arkadaki depolama olarak kullandığınızda birim anlık görüntüleri desteklenmez.

Ö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. Sorunlar meydana gelirse 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.

Birim anlık görüntüsü sınıfı oluşturun

Hacim anlık görüntüsü sınıfı bazı anlık görüntü ayarlarını tanımlar. Elastik SAN için birim anlık görüntü sınıfı oluşturmak için bu adımları izleyin.

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

  2. Aşağıdaki kodu yapıştırın. Anlık görüntü birimi sınıfı name değeri herhangi bir değer olabilir.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: elasticsan-snapshot-class
    driver: san.csi.azure.com
    deletionPolicy: Delete
    
  3. Birim anlık görüntüsü sınıfını oluşturmak için manifest dosyasını uygulayın.

    kubectl apply -f acstor-volumesnapshotclass.yaml
    

    Oluşturma tamamlandığında aşağıdaki gibi bir ileti görürsünüz:

    volumesnapshotclass.snapshot.storage.k8s.io/elasticsan-snapshot-class created
    

    Ayrıca, oluşturma işlemini onaylamak için komutunu çalıştırabilirsiniz kubectl get volumesnapshotclass . Bu örneğe benzer bir çıktı görmeniz gerekir:

    NAME                        DRIVER                DELETIONPOLICY    AGE
    elasticsan-snapshot-class   san.csi.azure.com     Delete            11s
    

Birim anlık görüntüsü oluştur.

Ardından, mevcut bir PVC'nin anlık görüntüsünü oluşturun ve önceki adımda oluşturduğunuz birim anlık görüntüsü sınıfını uygulayın.

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

  2. Aşağıdaki kodu yapıştırın. volumeSnapshotClassName olarak önceki adımda oluşturduğunuz birim anlık görüntü sınıfının adını ayarla. Anlık görüntü almak istediğiniz PVC'nin adına ayarlayın persistentVolumeClaimName . Hacim anlık görüntü name değeri herhangi bir değer olabilir.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: elasticsan-volume-snapshot
    spec:
      volumeSnapshotClassName: elasticsan-snapshot-class
      source:
        persistentVolumeClaimName: elasticsanpvc
    
  3. Birim anlık görüntüsünü oluşturmak için manifest dosyasını uygulayın.

    kubectl apply -f acstor-volumesnapshot.yaml
    

    Oluşturma tamamlandığında aşağıdaki gibi bir ileti görürsünüz:

    volumesnapshot.snapshot.storage.k8s.io/elasticsan-volume-snapshot created
    

    Birim anlık görüntüsünün oluşturulup oluşturulmadığını kontrol etmek için kubectl get volumesnapshot komutunu da çalıştırabilirsiniz. Eğer READYTOUSEtrue ise, sonraki adıma geçebilirsiniz.

Geri yüklenen kalıcı birim talebi oluşturma

Birim anlık görüntüsünü veri kaynağı olarak kullanan yeni bir PVC oluşturun.

  1. gibi acstor-pvc-restored.yamlbir YAML bildirim dosyası oluşturun.

  2. Aşağıdaki kodu yapıştırın. , storageClassName özgün PVC'yi oluştururken kullandığınız StorageClass ile eşleşmelidir. Veri kaynağı name değeri için, önceki adımda oluşturduğunuz birim anlık görüntüsünün adını kullanın. PVC metadata.name değeri herhangi bir değer olabilir.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-elasticsan-snapshot-restored
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: azuresan-csi
      resources:
        requests:
          storage: 100Gi
      dataSource:
        name: elasticsan-volume-snapshot
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
    
  3. PVC'yi oluşturmak için manifesti uygulayın.

    kubectl apply -f acstor-pvc-restored.yaml
    

    Oluşturma tamamlandığında aşağıdaki gibi bir ileti görürsünüz:

    persistentvolumeclaim/pvc-elasticsan-snapshot-restored created
    

    Kalıcı birimin oluşturulup oluşturulmadığını denetlemek için komutunu da çalıştırabilirsiniz kubectl describe pvc pvc-elasticsan-snapshot-restored . Durum, bağlamadan önce ilk tüketicinin oluşturulmasını beklediğini belirten bir iletiyle Beklemede olarak gösterilir.

İpucu

Bir hatayı düzeltmek veya değişiklik yapmak için YAML dosyasını yeniden uygulamanız gerekiyorsa, önce eski PVC'yi silin: kubectl delete pvc <pvc-name>.

Özgün podu silme (isteğe bağlı)

Yeni bir pod oluşturmadan önce, anlık görüntüyü oluşturduğunuz özgün podu silebilirsiniz.

  1. Podları listelemek için komutunu çalıştırın kubectl get pods . Doğru podu sildiğinizden emin olun.
  2. Pod'u silmek için komutunu çalıştırın kubectl delete pod <pod-name>.

Geri yüklenen anlık görüntüyü kullanarak yeni pod oluşturma

Geri yüklenen PVC'yi kullanarak yeni bir pod oluşturun. Karşılaştırma ve iş yükü benzetimi için Esnek G/Ç Test Aracı (fio) kullanarak pod oluşturun ve kalıcı birim için bağlama yolu belirleyin.

  1. gibi fio-pod-restore.yamlbir YAML bildirim dosyası oluşturun.

  2. Aşağıdaki kodu yapıştırın. Kalıcı birim talebi claimName , oluşturduğunuz geri yüklenen PVC'nin adı olmalıdır. Pod metadata.name değeri herhangi bir değer olabilir.

    apiVersion: v1
    kind: Pod
    metadata:
      name: fio-restore
    spec:
      volumes:
        - name: iscsi-volume
          persistentVolumeClaim:
            claimName: pvc-elasticsan-snapshot-restored
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          volumeMounts:
            - mountPath: /volume
              name: iscsi-volume
    
  3. Podu dağıtmak için bildirimi uygulayın.

    kubectl apply -f fio-pod-restore.yaml
    

    Bu örneğe benzer bir çıktı görmeniz gerekir:

    pod/fio-restore created
    
  4. Pod'un çalışıp çalışmadığını ve PVC'nin bağlı olup olmadığını denetleyin:

    kubectl describe pod fio-restore
    kubectl describe pvc pvc-elasticsan-snapshot-restored
    
  5. Geçerli durumunu görmek için fio testini denetleyin:

    kubectl exec -it fio-restore -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

Artık geri yüklenen PVC'yi kullanan bir podunuz var ve bunu Kubernetes iş yükleriniz için kullanabilirsiniz.

Ayrıca bkz.