Menggunakan rekam jepret volume dengan Azure Container Storage

Azure Container Storage adalah layanan manajemen volume, penyebaran, dan orkestrasi berbasis cloud yang dibangun secara asli untuk kontainer. Artikel ini menunjukkan kepada Anda cara mengambil rekam jepret point-in-time dari volume persisten dan memulihkannya dengan klaim volume persisten baru.

Prasyarat

  • Artikel ini memerlukan versi terbaru (2.35.0 atau yang lebih baru) dari Azure CLI. Lihat Cara menginstal Azure CLI. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terpasang. Jika Anda berencana untuk menjalankan perintah secara lokal alih-alih di Azure Cloud Shell, pastikan untuk menjalankannya dengan hak istimewa administratif.
  • Anda akan memerlukan kluster Azure Kubernetes Service (AKS) dengan kumpulan simpul setidaknya tiga komputer virtual (VM) untuk node kluster, masing-masing dengan minimal empat CPU virtual (vCPU).
  • Artikel ini mengasumsikan Anda telah menginstal Azure Container Storage pada kluster AKS Anda, dan bahwa Anda telah membuat kumpulan penyimpanan dan klaim volume persisten (PVC) menggunakan Disk Azure atau disk sementara (penyimpanan lokal). Rekam jepret volume saat ini tidak didukung saat Anda menggunakan Elastic SAN sebagai penyimpanan cadangan.

Membuat kelas rekam jepret volume

Pertama, buat kelas rekam jepret volume, yang memungkinkan Anda menentukan atribut rekam jepret volume, dengan mendefinisikannya dalam file manifes YAML. Ikuti langkah-langkah ini untuk membuat kelas rekam jepret volume untuk Azure Disks.

  1. Gunakan editor teks favorit Anda untuk membuat file manifes YAML seperti code acstor-volumesnapshotclass.yaml.

  2. Tempelkan dalam kode berikut. Nilai nama kelas rekam jepret volume bisa menjadi apa pun yang Anda inginkan.

    yml
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: csi-acstor-vsc
    driver: containerstorage.csi.azure.com
    deletionPolicy: Delete
    parameters:
      incremental: "true"  # available values: "true", "false" ("true" by default for Azure Public Cloud, and "false" by default for Azure Stack Cloud)
    
  3. Terapkan file manifes YAML untuk membuat kelas rekam jepret volume.

    Azure CLI
    kubectl apply -f acstor-volumesnapshotclass.yaml
    

    Saat pembuatan selesai, Anda akan melihat pesan seperti:

    Output
    volumesnapshotclass.snapshot.storage.k8s.io/csi-acstor-vsc created
    

    Anda juga dapat menjalankan kubectl get volumesnapshotclass untuk memeriksa apakah kelas rekam jepret volume telah dibuat. Anda akan melihat output seperti:

    Output
    NAME            DRIVER                            DELETIONPOLICY    AGE
    csi-acstor-vsc	 containerstorage.csi.azure.com	   Delete	           11s
    

Membuat rekam jepret volume

Selanjutnya, Anda akan membuat rekam jepret klaim volume persisten yang ada dan menerapkan kelas rekam jepret volume yang Anda buat di langkah sebelumnya.

  1. Gunakan editor teks favorit Anda untuk membuat file manifes YAML seperti code acstor-volumesnapshot.yaml.

  2. Tempelkan dalam kode berikut. volumeSnapshotClassName harus menjadi nama kelas rekam jepret volume yang Anda buat di langkah sebelumnya. Untuk persistentVolumeClaimName, gunakan nama klaim volume persisten yang ingin Anda ambil rekam jepretnya. Nilai nama rekam jepret volume dapat menjadi apa pun yang Anda inginkan.

    yml
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: azuredisk-volume-snapshot
    spec:
      volumeSnapshotClassName: csi-acstor-vsc
      source:
        persistentVolumeClaimName: azurediskpvc
    
  3. Terapkan file manifes YAML untuk membuat rekam jepret volume.

    Azure CLI
    kubectl apply -f acstor-volumesnapshot.yaml
    

    Saat pembuatan selesai, Anda akan melihat pesan seperti:

    Output
    volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
    

    Anda juga dapat menjalankan kubectl get volumesnapshot untuk memeriksa apakah rekam jepret volume telah dibuat. Jika READYTOUSE menunjukkan true, Anda dapat melanjutkan ke langkah berikutnya.

Membuat klaim volume persisten yang dipulihkan

Sekarang Anda dapat membuat klaim volume persisten baru yang menggunakan rekam jepret volume sebagai sumber data.

  1. Gunakan editor teks favorit Anda untuk membuat file manifes YAML seperti code acstor-pvc-restored.yaml.

  2. Tempelkan dalam kode berikut. storageClassName harus cocok dengan kelas penyimpanan yang Anda gunakan saat membuat volume persisten asli. Misalnya, jika Anda menggunakan disk ephemeral (NVMe lokal) alih-alih Azure Disks untuk penyimpanan back-end, ubah storageClassName ke acstor-ephemeraldisk. Untuk nilai nama sumber data, gunakan nama rekam jepret volume yang Anda buat di langkah sebelumnya. Nilai nama metadata untuk klaim volume persisten dapat menjadi apa pun yang Anda inginkan.

    yml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk-snapshot-restored
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-azuredisk
      resources:
        requests:
          storage: 100Gi
      dataSource:
        name: azuredisk-volume-snapshot
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
    
  3. Terapkan file manifes YAML untuk membuat PVC.

    Azure CLI
    kubectl apply -f acstor-pvc-restored.yaml
    

    Saat pembuatan selesai, Anda akan melihat pesan seperti:

    Output
    persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
    

    Anda juga dapat menjalankan kubectl describe pvc pvc-azuredisk-snapshot-restored untuk memeriksa apakah volume persisten telah dibuat. Anda harus berstatus Tertunda dan pesan menunggu konsumen pertama dibuat sebelum mengikat.

Tip

Jika Anda sudah membuat klaim volume persisten yang dipulihkan dan ingin menerapkan file yaml lagi untuk memperbaiki kesalahan atau membuat perubahan, Anda harus terlebih dahulu menghapus klaim volume persisten lama sebelum menerapkan file yaml lagi: kubectl delete pvc <pvc-name>.

Menghapus pod asli (opsional)

Sebelum membuat pod baru, Anda mungkin ingin menghapus pod asli tempat Anda membuat rekam jepret.

  1. Jalankan kubectl get pods untuk mencantumkan pod. Pastikan Anda menghapus pod yang tepat.
  2. Untuk menghapus pod, jalankan kubectl delete pod <pod-name>.

Membuat pod baru menggunakan rekam jepret yang dipulihkan

Selanjutnya, buat pod baru menggunakan klaim volume persisten yang dipulihkan. Buat pod menggunakan Fio (Flexible I/O Tester) untuk simulasi benchmarking dan beban kerja, dan tentukan jalur pemasangan untuk volume persisten.

  1. Gunakan editor teks favorit Anda untuk membuat file manifes YAML seperti code acstor-pod2.yaml.

  2. Tempelkan dalam kode berikut. Klaim claimName volume persisten harus menjadi nama klaim volume persisten rekam jepret yang dipulihkan yang Anda buat. Nilai nama metadata untuk pod dapat menjadi apa pun yang Anda inginkan.

    yml
    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod2
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: diskpv
          persistentVolumeClaim:
            claimName: pvc-azuredisk-snapshot-restored
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: diskpv
    
  3. Terapkan file manifes YAML untuk menyebarkan pod.

    Azure CLI
    kubectl apply -f acstor-pod2.yaml
    

    Anda akan melihat output yang mirip dengan hal berikut:

    Output
    pod/fiopod2 created
    
  4. Periksa apakah pod berjalan dan bahwa klaim volume persisten telah berhasil terikat ke pod:

    Azure CLI
    kubectl describe pod fiopod2
    kubectl describe pvc pvc-azuredisk-snapshot-restored
    
  5. Periksa pengujian fio untuk melihat statusnya saat ini:

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

Anda sekarang telah menyebarkan pod baru dari klaim volume persisten yang dipulihkan, dan Anda dapat menggunakannya untuk beban kerja Kubernetes Anda.

Lihat juga