Menggunakan driver disk Container Storage Interface (CSI) di AKS yang diaktifkan oleh Azure Arc

> Berlaku untuk: AKS di Azure Stack HCI 22H2, AKS di Windows Server, AKS di Azure Stack HCI 23H2

Artikel ini menjelaskan cara menggunakan kelas penyimpanan bawaan Antarmuka Penyimpanan Kontainer (CSI) untuk membuat volume persisten disk secara dinamis dan membuat kelas penyimpanan kustom di AKS yang diaktifkan oleh Arc.

Gambaran umum CSI di AKS yang diaktifkan oleh Arc

Container Storage Interface (CSI) adalah standar untuk mengekspos blok abritrer dan sistem penyimpanan file ke beban kerja kontainer pada Kube. Dengan menggunakan CSI, AKS yang diaktifkan oleh Arc dapat menulis, menyebarkan, dan melakukan iterasi plug-in untuk mengekspos sistem penyimpanan baru. Penggunaan CSI juga dapat meningkatkan penyimpanan yang sudah ada di Kubernetes tanpa harus menyentuh kode inti Kubernetes, lalu tunggu siklus rilisnya.

Driver disk dan file CSI yang digunakan oleh AKS Arc adalah driver yang mematuhi spesifikasi CSI.

Dukungan driver penyimpanan CSI di AKS Arc memungkinkan Anda untuk menggunakan:

  • Disk AKS Arc yang dapat Anda gunakan untuk membuat sumber daya DataDisk Kubernetes. Disk ini dipasang sebagai ReadWriteOnce, sehingga mereka hanya tersedia untuk satu pod pada satu waktu. Untuk volume penyimpanan yang dapat diakses oleh beberapa pod secara bersamaan, gunakan file AKS Arc.

  • File AKS Arc yang dapat Anda gunakan untuk memasang berbagi SMB atau NFS ke pod. File ini dipasang sebagai ReadWriteMany, sehingga Anda dapat berbagi data di beberapa node dan pod. File juga dapat dipasang sebagai ReadWriteOnce berdasarkan pada spesifikasi PVC (klaim volume persisten).

Membuat volume persisten disk secara dinamis menggunakan kelas penyimpanan bawaan

Kelas penyimpanan digunakan untuk menentukan bagaimana sebuah unit penyimpanan dibuat secara dinamis dengan volume persisten. Untuk informasi selengkapnya mengenai cara menggunakan kelas penyimpanan, lihat Kelas penyimpanan Kubernetes.

Di AKS Arc, kelas penyimpanan default dibuat secara default dan menggunakan CSI untuk membuat volume yang didukung VHDX. Kebijakan klaim kembali memastikan bahwa VHDX yang mendasarinya dihapus ketika volume persisten yang menggunakannya dihapus. Kelas penyimpanan juga mengonfigurasi volume persisten agar dapat diperluas, Anda hanya perlu mengedit klaim volume persisten dengan ukuran baru.

Untuk memanfaatkan kelas penyimpanan ini, buat PVC dan pod masing-masing yang mereferensikan dan menggunakannya. PVC digunakan untuk provisi penyimpanan secara otomatis berdasarkan kelas penyimpanan. PVC dapat menggunakan salah satu kelas penyimpanan yang dibuat sebelumnya atau kelas penyimpanan yang ditentukan pengguna untuk membuat VHDX dengan ukuran yang diinginkan. Ketika Anda membuat definisi Pod, PVC ditentukan untuk meminta penyimpanan yang diinginkan.

Membuat kelas penyimpanan kustom untuk disk

Kelas penyimpanan default cocok untuk sebagian besar skenario umum. Namun, dalam beberapa kasus, Anda mungkin ingin membuat kelas penyimpanan Anda sendiri yang menyimpan PV di lokasi tertentu yang dipetakan ke tingkat performa tertentu.

Jika Anda memiliki beban kerja Linux (pod), Anda harus membuat kelas penyimpanan kustom dengan parameter fsType: ext4. Persyaratan ini berlaku untuk Kubernetes versi 1.19 dan 1.20 atau yang lebih baru. Contoh berikut menunjukkan definisi kelas penyimpanan kustom dengan fsType parameter yang ditentukan:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aks-hci-disk-custom
parameters:
  blocksize: "33554432"
  container: SqlStorageContainer
  dynamic: "true"
  group: clustergroup-summertime
  hostname: TESTPATCHING-91.sys-sqlsvr.local
  logicalsectorsize: "4096"
  physicalsectorsize: "4096"
  port: "55000"
  fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true  

Jika membuat kelas penyimpanan kustom, Anda dapat menentukan lokasi tempat Anda ingin menyimpan PV. Jika infrastruktur yang mendasar adalah Azure Stack HCI, lokasi baru ini bisa menjadi volume yang didukung oleh SSD/NVMe berkinerja tinggi atau volume yang dioptimalkan biaya yang didukung oleh HDD.

Membuat kelas penyimpanan kustom merupakan proses dua langkah:

  1. Buat jalur penyimpanan baru menggunakan stack-hci-vm storagepath cmdlet untuk membuat, menampilkan, dan mencantumkan jalur penyimpanan di kluster Azure Stack HCI Anda. Untuk informasi selengkapnya tentang pembuatan jalur penyimpanan, lihat jalur penyimpanan.

    Untuk $path, buat jalur penyimpanan bernama $storagepathname; misalnya, C:\ClusterStorage\test-storagepath:

    az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
    

    Dapatkan ID sumber daya jalur penyimpanan:

    $storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv 
    
  2. Buat kelas penyimpanan kustom baru menggunakan jalur penyimpanan baru.

    1. Buat file bernama sc-aks-hci-disk-custom.yaml, lalu salin manifes dari file YAML berikut. Kelas penyimpanan tersebut sama dengan kelas penyimpanan default kecuali dengan container yang baru. Gunakan yang storage path ID dibuat di langkah sebelumnya untuk container. Untuk group dan hostname, kueri kelas penyimpanan default dengan menjalankan kubectl get storageclass default -o yaml, lalu gunakan nilai yang ditentukan:

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
       name: aks-hci-disk-custom
      provisioner: disk.csi.akshci.com
      parameters:
       blocksize: "33554432"
       container: <storage path ID>
       dynamic: "true"
       group: <e.g clustergroup-akshci> # same as the default storageclass
       hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass
       logicalsectorsize: "4096"
       physicalsectorsize: "4096"
       port: "55000"
       fsType: ext4 # refer to the note above to determine when to include this parameter
      allowVolumeExpansion: true
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      
    2. Buat kelas penyimpanan dengan perintah kubectl apply dan tentukan file sc-aks-hci-disk-custom.yaml Anda:

       $ kubectl apply -f sc-aks-hci-disk-custom.yaml
       storageclass.storage.k8s.io/aks-hci-disk-custom created
      

Langkah berikutnya