Menggunakan driver Antarmuka Penyimpanan Kontainer (CSI) penyimpanan Azure Blob

Driver Container Storage Interface (CSI) penyimpanan Azure Blob adalah driver yang mematuhi spesifikasi CSI yang digunakan oleh Azure Kubernetes Service (AKS) untuk mengelola siklus hidup penyimpanan Azure Blob. CSI adalah standar untuk mengekspos blok arbitrer dan sistem penyimpanan file ke beban kerja dalam kontainer di Kubernetes.

Dengan mengadopsi dan menggunakan CSI, AKS kini dapat menulis, menyebarkan, dan melakukan iterasi plug-in untuk mengekspos sistem penyimpanan baru atau yang ada pada Kubernetes. Menggunakan driver CSI di AKS menghindari menyentuh kode inti Kubernetes dan menunggu siklus rilisnya.

Saat Anda memasang penyimpanan Azure Blob sebagai sistem file ke dalam kontainer atau pod, itu memungkinkan Anda untuk menggunakan penyimpanan blob dengan sejumlah aplikasi yang bekerja sejumlah besar data yang tidak terstruktur. Contohnya:

  • Data file log
  • Gambar, dokumen, dan streaming video atau audio
  • Data pemulihan bencana

Data pada penyimpanan objek dapat diakses oleh aplikasi yang menggunakan protokol BlobFuse atau Network File System (NFS) 3.0. Sebelum pengenalan driver CSI penyimpanan Azure Blob, satu-satunya opsi adalah menginstal driver yang tidak didukung secara manual untuk mengakses penyimpanan Blob dari aplikasi Anda yang berjalan di AKS. Saat driver CSI penyimpanan Azure Blob diaktifkan di AKS, ada dua kelas penyimpanan bawaan: azureblob-fuse-premium dan azureblob-nfs-premium.

Untuk membuat kluster AKS dengan dukungan driver CSI, lihat driver CSI di AKS. Untuk mempelajari selengkapnya tentang perbedaan akses antara setiap jenis penyimpanan Azure menggunakan protokol NFS, lihat Membandingkan akses ke Azure Files, Blob Storage, dan Azure NetApp Files dengan NFS.

Fitur driver CSI penyimpanan Azure Blob

Driver CSI penyimpanan Azure Blob mendukung fitur-fitur berikut:

  • Protokol BlobFuse dan Network File System (NFS) versi 3.0

Sebelum Anda mulai

  • Anda memerlukan Azure CLI versi 2.42 atau yang lebih baru yang diinstal dan dikonfigurasi. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

  • Lakukan langkah-langkah dalam link ini jika Anda sebelumnya menginstal driver sumber terbuka Blob Storage CSI untuk mengakses Azure Blob Storage dari kluster.

Catatan

Jika blobfuse-proxy tidak diaktifkan selama penginstalan driver sumber terbuka, penghapusan instalasi driver sumber terbuka akan mengganggu pemasangan blobfuse yang ada. Namun, pemasangan NFS akan tetap tidak terpengaruh.

Mengaktifkan driver CSI pada kluster AKS baru atau yang sudah ada

Dengan menggunakan Azure CLI, Anda dapat mengaktifkan driver CSI penyimpanan Blob pada kluster AKS baru atau yang sudah ada sebelum mengonfigurasi volume persisten untuk digunakan oleh pod di kluster.

Untuk mengaktifkan driver pada kluster baru, sertakan parameter --enable-blob-driver dengan perintah az aks create seperti yang ditunjukkan pada contoh berikut:

az aks create --enable-blob-driver -n myAKSCluster -g myResourceGroup

Untuk mengaktifkan driver pada kluster yang ada, sertakan parameter --enable-blob-driver dengan perintah az aks update seperti yang ditunjukkan pada contoh berikut:

az aks update --enable-blob-driver -n myAKSCluster -g myResourceGroup

Anda diminta untuk mengonfirmasi bahwa tidak ada driver Blob CSI sumber terbuka yang diinstal. Setelah Anda mengonfirmasi, mungkin perlu beberapa menit untuk menyelesaikan tindakan ini. Setelah selesai, Anda akan melihat di output status mengaktifkan driver di kluster Anda. Contoh berikut menyerupai bagian yang menunjukkan hasil perintah sebelumnya:

"storageProfile": {
    "blobCsiDriver": {
      "enabled": true
    },

Menonaktifkan driver CSI pada kluster AKS yang sudah ada

Dengan menggunakan Azure CLI, Anda dapat menonaktifkan driver CSI penyimpanan Blob pada kluster AKS yang ada setelah menghapus volume persisten dari kluster tersebut.

Untuk menonaktifkan driver pada kluster yang ada, sertakan parameter --disable-blob-driver dengan perintah az aks update seperti yang ditunjukkan pada contoh berikut:

az aks update --disable-blob-driver -n myAKSCluster -g myResourceGroup

Menggunakan volume persisten dengan penyimpanan Azure Blob

Sebuah volume persisten (PV) mewakili sepotong penyimpanan yang ditentukan untuk penggunaan dengan pod Kube. PV dapat digunakan oleh satu atau banyak pod dan dapat diprovisikan secara dinamis atau statis. Jika beberapa pod memerlukan akses bersamaan ke volume penyimpanan yang sama, Anda dapat menggunakan penyimpanan Azure Blob untuk terhubung dengan menggunakan Network File System (NFS) atau blobfuse. Artikel ini menunjukkan cara membuat kontainer penyimpanan Azure Blob secara dinamis untuk digunakan oleh beberapa pod di kluster AKS.

Untuk informasi lebih lanjut tentang volume Kubernetes, lihat Opsi penyimpanan untuk aplikasi di AKS.

Membuat PV penyimpanan Azure Blob secara dinamis dengan menggunakan kelas penyimpanan bawaan

Kelas penyimpanan digunakan untuk menentukan cara pembuatan kontainer penyimpanan Azure Blob. Akun penyimpanan dibuat secara otomatis di grup sumber daya node untuk digunakan dengan kelas penyimpanan untuk menampung kontainer penyimpanan Azure Blob. Pilih salah satu dari SKU redundansi penyimpanan Azure berikut untuk skuName:

  • Standard_LRS: Penyimpanan redundan lokal standar
  • Premium_LRS: Penyimpanan redundan premium lokal
  • Standard_ZRS: Penyimpanan redundan zona standar
  • Premium_ZRS: Penyimpanan redundan zona premium
  • Standard_GRS: Penyimpanan geo-redundan standar
  • Standard_RAGRS: Penyimpanan geo-redundan akses baca standar

Saat Anda menggunakan driver CSI penyimpanan di AKS, ada dua StorageClasses bawaan tambahan yang menggunakan driver penyimpanan Azure Blob CSI.

Kebijakan klaim kembali pada kedua kelas penyimpanan memastikan bahwa penyimpanan Azure Blob yang mendasarinya dihapus saat setiap PV dihapus. Kelas penyimpanan juga mengonfigurasi kontainer agar dapat diperluas secara default, karena parameter set allowVolumeExpansion diatur ke true.

Gunakan perintah kubectl get sc untuk melihat kelas penyimpanan. Contoh berikut menunjukkan kelas penyimpanan azureblob-fuse-premium dan azureblob-nfs-premium yang tersedia dalam kluster AKS:

NAME                                  PROVISIONER       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION     AGE
azureblob-fuse-premium               blob.csi.azure.com   Delete          Immediate              true                   23h
azureblob-nfs-premium                blob.csi.azure.com   Delete          Immediate              true                   23h

Untuk menggunakan kelas penyimpanan ini, buat PVC dan pod masing-masing yang mereferensikan dan menggunakannya. Sebuah PVC digunakan untuk menentukan penyimpanan secara otomatis berdasarkan kelas penyimpanan. PVC dapat menggunakan salah satu kelas penyimpanan yang dibuat sebelumnya atau kelas penyimpanan yang ditentukan pengguna untuk membuat kontainer penyimpanan Azure Blob untuk SKU, ukuran, dan protokol yang diinginkan untuk berkomunikasi dengannya. Ketika Anda membuat definisi pod, PVC ditentukan untuk meminta penyimpanan yang diinginkan.

Menggunakan StatefulSet

Agar volume penyimpanan tetap bertahan untuk beban kerja, Anda dapat menggunakan StatefulSet. Ini memudahkan untuk mencocokkan volume yang ada dengan Pod baru yang menggantikan Pod yang gagal. Contoh berikut menunjukkan cara menyiapkan StatefulSet untuk penyimpanan Blob menggunakan protokol Blobfuse atau NFS.

Prasyarat

  • Identitas sarana Kontrol kluster AKS Anda (yaitu, nama kluster AKS Anda) ditambahkan ke peran Kontributor di VNet dan grup keamanan jaringan.
  1. Buat file bernama azure-blob-nfs-ss.yaml dan salin dalam YAML berikut.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: statefulset-blob-nfs
      labels:
        app: nginx
    spec:
      serviceName: statefulset-blob-nfs
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: statefulset-blob-nfs
              image: mcr.microsoft.com/oss/nginx/nginx:1.19.5
              volumeMounts:
                - name: persistent-storage
                  mountPath: /mnt/blob
      updateStrategy:
        type: RollingUpdate
      selector:
        matchLabels:
          app: nginx
      volumeClaimTemplates:
        - metadata:
            name: persistent-storage
          spec:
            storageClassName: azureblob-nfs-premium
            accessModes: ["ReadWriteMany"]
            resources:
              requests:
                storage: 100Gi
    
  2. Buat StatefulSet dengan perintah create kubectl:

    kubectl create -f azure-blob-nfs-ss.yaml
    

Langkah berikutnya