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
Pastikan Anda telah menginstal dan mengonfigurasi Azure CLI versi 2.42 atau yang lebih baru. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. Jika Anda telah menginstal ekstensi Azure CLIaks-preview
, pastikan Anda memperbarui ekstensi ke versi terbaru dengan memanggilaz extension update --name aks-preview
.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 \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
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 --name myAKSCluster --resource-group 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 --name myAKSCluster --resource-group 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.
Catatan
Menyusutkan volume persisten tidak didukung.
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.
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.22 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
Buat StatefulSet dengan perintah create kubectl:
kubectl create -f azure-blob-nfs-ss.yaml
Langkah berikutnya
- Untuk mempelajari cara menyiapkan volume persisten statis atau dinamis, lihat Membuat dan menggunakan volume dengan penyimpanan Azure Blob.
- Untuk mempelajari cara menggunakan driver CSI untuk Azure Disks, lihat Menggunakan Azure Disks dengan driver CSI
- Untuk mempelajari cara menggunakan driver CSI untuk Azure Files, lihat Menggunakan Azure Files dengan driver CSI
- Untuk informasi selengkapnya tentang praktik terbaik penyimpanan, lihat Praktik terbaik untuk penyimpanan dan pencadangan di Azure Kubernetes Service.
Azure Kubernetes Service