Menggunakan Azure Container Storage dengan disk terkelola Azure

Azure Container Storage adalah layanan manajemen volume, penyebaran, dan orkestrasi berbasis cloud yang dibangun secara asli untuk kontainer. Artikel ini menunjukkan cara mengonfigurasi Azure Container Storage untuk menggunakan disk terkelola Azure sebagai penyimpanan back-end untuk beban kerja Kubernetes Anda. Pada akhirnya, Anda akan memiliki pod yang menggunakan disk terkelola Azure sebagai penyimpanannya.

Prasyarat

  • Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

  • Artikel ini memerlukan versi terbaru (2.35.0 atau yang lebih baru) dari Azure CLI. Lihat Cara menginstal Azure CLI. Jika Anda menggunakan lingkungan Bash di Azure Cloud Shell, versi terbaru sudah diinstal. Jika Anda berencana untuk menjalankan perintah secara lokal alih-alih di Azure Cloud Shell, pastikan untuk menjalankannya dengan hak istimewa administratif. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.

  • Anda akan memerlukan klien baris perintah Kubernetes, kubectl. Ini sudah diinstal jika Anda menggunakan Azure Cloud Shell, atau Anda dapat menginstalnya secara lokal dengan menjalankan az aks install-cli perintah .

  • Jika Anda belum menginstal Azure Container Storage, ikuti instruksi dalam Menggunakan Azure Container Storage dengan Azure Kubernetes Service.

  • Periksa apakah wilayah target Anda didukung di wilayah Azure Container Storage.

  • Untuk menggunakan Azure Container Storage dengan disk terkelola Azure, kluster AKS Anda harus memiliki kumpulan node setidaknya tiga VM tujuan umum seperti standard_d4s_v5 untuk node kluster, masing-masing dengan minimal empat CPU virtual (vCPU).

Membuat dan melampirkan volume persisten

Ikuti langkah-langkah ini untuk membuat dan melampirkan volume persisten.

1. Buat kumpulan penyimpanan

Pertama, buat kumpulan penyimpanan, yang merupakan pengelompokan penyimpanan logis untuk kluster Kubernetes Anda, dengan menentukannya dalam file manifes YAML.

Anda memiliki opsi berikut untuk membuat kumpulan penyimpanan:

Jika Anda mengaktifkan Azure Container Storage menggunakan az aks create perintah atau az aks update , Anda mungkin sudah memiliki kumpulan penyimpanan. Gunakan kubectl get sp -n acstor untuk mendapatkan daftar kumpulan penyimpanan. Jika Anda memiliki kumpulan penyimpanan yang sudah tersedia yang ingin Anda gunakan, Anda dapat melewati langkah ini dan melanjutkan ke Menampilkan kelas penyimpanan yang tersedia.

Membuat kumpulan penyimpanan dinamis

Ikuti langkah-langkah ini untuk membuat kumpulan penyimpanan dinamis untuk Azure Disks.

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

  2. Tempelkan dalam kode berikut. Nilai nama kumpulan penyimpanan bisa menjadi apa pun yang Anda inginkan. Untuk skuName, tentukan tingkat performa dan redundansi. Nilai yang dapat diterima adalah Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS, dan StandardSSD_ZRS. Untuk penyimpanan, tentukan jumlah kapasitas penyimpanan untuk kumpulan di Gi atau Ti.

    yml
    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
      resources:
        requests:
          storage: 1Ti
    

    Jika Anda menggunakan disk UltraSSD_LRS atau PremiumV2_LRS, Anda dapat mengatur IOPS dan throughput menggunakan IOPSReadWrite parameter dan MBpsReadWrite dalam definisi kumpulan penyimpanan Anda.

    IOPSReadWrite mengacu pada jumlah IOPS yang diizinkan untuk disk Ultra SSD dan Premium v2 LRS. Untuk informasi selengkapnya, lihat Ultra Disk IOPS dan Premium SSD v2 IOPS.

    MBpsReadWrite mengacu pada bandwidth yang diizinkan untuk disk Ultra SSD dan Premium v2 LRS. MBps mengacu pada jutaan byte per detik (MB/dtk = 10^6 Byte per detik). Untuk informasi selengkapnya, lihat Throughput Ultra Disk dan throughput Premium SSD v2.

    yml
    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: PremiumV2_LRS
          iopsReadWrite: 5000
          mbpsReadWrite: 200
      resources:
        requests:
          storage: 1Ti
    
  3. Simpan file manifes YAML, lalu terapkan untuk membuat kumpulan penyimpanan.

    Azure CLI
    kubectl apply -f acstor-storagepool.yaml 
    

    Saat pembuatan kumpulan penyimpanan selesai, Anda akan melihat pesan seperti:

    Output
    storagepool.containerstorage.azure.com/azuredisk created
    

    Anda juga dapat menjalankan perintah ini untuk memeriksa status kumpulan penyimpanan. Ganti <storage-pool-name> dengan nilai nama kumpulan penyimpanan Anda. Untuk contoh ini, nilainya adalah azuredisk.

    Azure CLI
    kubectl describe sp <storage-pool-name> -n acstor
    

Saat kumpulan penyimpanan dibuat, Azure Container Storage akan membuat kelas penyimpanan atas nama Anda, menggunakan konvensi acstor-<storage-pool-name>penamaan . Sekarang Anda dapat menampilkan kelas penyimpanan yang tersedia dan membuat klaim volume persisten.

Membuat kumpulan penyimpanan yang telah disediakan sebelumnya

Jika Anda memiliki disk terkelola Azure yang sudah disediakan, Anda dapat membuat kumpulan penyimpanan yang telah disediakan sebelumnya menggunakan disk tersebut. Karena disk sudah disediakan, Anda tidak perlu menentukan skuName atau kapasitas penyimpanan saat membuat kumpulan penyimpanan.

Ikuti langkah-langkah ini untuk membuat kumpulan penyimpanan yang telah disediakan sebelumnya untuk Azure Disks.

  1. Masuk ke portal Azure.

  2. Untuk setiap disk yang ingin Anda gunakan, navigasikan ke disk terkelola Azure dan pilih Properti Pengaturan>. Salin seluruh string di bawah ID Sumber Daya dan letakkan dalam file teks.

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

  4. Tempelkan dalam kode berikut. Nilai nama kumpulan penyimpanan bisa menjadi apa pun yang Anda inginkan. Ganti <resource-id> dengan ID sumber daya dari setiap disk terkelola. Simpan file.

    yml
    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: sp-preprovisioned
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          disks:
            - reference <resource-id1>
            - reference <resource-id2>
    
  5. Terapkan file manifes YAML untuk membuat kumpulan penyimpanan.

    Azure CLI
    kubectl apply -f acstor-storagepool.yaml 
    

    Saat pembuatan kumpulan penyimpanan selesai, Anda akan melihat pesan seperti:

    Output
    storagepool.containerstorage.azure.com/sp-preprovisioned created
    

    Anda juga dapat menjalankan perintah ini untuk memeriksa status kumpulan penyimpanan. Ganti <storage-pool-name> dengan nilai nama kumpulan penyimpanan Anda. Untuk contoh ini, nilainya akan diprovisikan sebelumnya sp.

    Azure CLI
    kubectl describe sp <storage-pool-name> -n acstor
    

Saat kumpulan penyimpanan dibuat, Azure Container Storage akan membuat kelas penyimpanan atas nama Anda, menggunakan konvensi acstor-<storage-pool-name>penamaan . Sekarang Anda dapat menampilkan kelas penyimpanan yang tersedia dan membuat klaim volume persisten.

Membuat kumpulan penyimpanan dinamis menggunakan kunci enkripsi Anda sendiri (opsional)

Semua data dalam akun penyimpanan Azure dienkripsi saat tidak aktif. Secara default, data dienkripsi dengan kunci yang dikelola Microsoft. Untuk kontrol lebih besar atas kunci enkripsi, Anda dapat menyediakan kunci yang dikelola pelanggan (CMK) saat membuat kumpulan penyimpanan untuk mengenkripsi volume persisten yang akan Anda buat.

Untuk menggunakan kunci Anda sendiri untuk enkripsi sisi server, Anda harus memiliki Azure Key Vault dengan kunci. Key Vault harus mengaktifkan perlindungan penghapusan menyeluruh, dan harus menggunakan model izin Azure RBAC. Pelajari selengkapnya tentang kunci yang dikelola pelanggan di Linux.

Saat membuat kumpulan penyimpanan, Anda harus menentukan parameter CMK. Parameter enkripsi CMK yang diperlukan adalah:

  • keyVersion menentukan versi kunci yang akan digunakan
  • keyName adalah nama kunci Anda
  • keyVaultUri adalah pengidentifikasi sumber daya seragam Azure Key Vault, misalnya https://user.vault.azure.net
  • Identitas menentukan identitas terkelola dengan akses ke vault, misalnya /subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool

Ikuti langkah-langkah ini untuk membuat kumpulan penyimpanan menggunakan kunci enkripsi Anda sendiri. Semua volume persisten yang dibuat dari kumpulan penyimpanan ini akan dienkripsi menggunakan kunci yang sama.

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

  2. Tempelkan kode berikut, berikan parameter yang diperlukan, dan simpan file. Nilai nama kumpulan penyimpanan bisa menjadi apa pun yang Anda inginkan. Untuk skuName, tentukan tingkat performa dan redundansi. Nilai yang dapat diterima adalah Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS, dan StandardSSD_ZRS. Untuk penyimpanan, tentukan jumlah kapasitas penyimpanan untuk kumpulan di Gi atau Ti. Pastikan untuk menyediakan parameter enkripsi CMK.

    yml
    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
          encryption: {
            keyVersion: "<key-version>",
            keyName: "<key-name>",
            keyVaultUri: "<key-vault-uri>",
            identity: "<identity>"
          }
      resources:
        requests:
          storage: 1Ti
    
  3. Terapkan file manifes YAML untuk membuat kumpulan penyimpanan.

    Azure CLI
    kubectl apply -f acstor-storagepool-cmk.yaml 
    

    Saat pembuatan kumpulan penyimpanan selesai, Anda akan melihat pesan seperti:

    Output
    storagepool.containerstorage.azure.com/azuredisk created
    

    Anda juga dapat menjalankan perintah ini untuk memeriksa status kumpulan penyimpanan. Ganti <storage-pool-name> dengan nilai nama kumpulan penyimpanan Anda. Untuk contoh ini, nilainya adalah azuredisk.

    Azure CLI
    kubectl describe sp <storage-pool-name> -n acstor
    

Saat kumpulan penyimpanan dibuat, Azure Container Storage akan membuat kelas penyimpanan atas nama Anda, menggunakan konvensi acstor-<storage-pool-name>penamaan .

2. Tampilkan kelas penyimpanan yang tersedia

Saat kumpulan penyimpanan siap digunakan, Anda harus memilih kelas penyimpanan untuk menentukan bagaimana penyimpanan dibuat secara dinamis saat membuat klaim volume persisten dan menyebarkan volume persisten.

Jalankan kubectl get sc untuk menampilkan kelas penyimpanan yang tersedia. Anda akan melihat kelas penyimpanan yang disebut acstor-<storage-pool-name>.

Penting

Jangan gunakan kelas penyimpanan yang ditandai internal. Ini adalah kelas penyimpanan internal yang diperlukan agar Azure Container Storage berfungsi.

3. Membuat klaim volume persisten

Klaim volume persisten (PVC) digunakan untuk mem-provisikan penyimpanan secara otomatis berdasarkan kelas penyimpanan. Ikuti langkah-langkah ini untuk membuat PVC menggunakan kelas penyimpanan baru.

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

  2. Tempelkan kode berikut dan simpan file. Nilai PVC name dapat menjadi apa pun yang Anda inginkan.

    yml
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurediskpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-azuredisk # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. Terapkan file manifes YAML untuk membuat PVC.

    Azure CLI
    kubectl apply -f acstor-pvc.yaml
    

    Anda akan melihat output yang serupa dengan:

    Output
    persistentvolumeclaim/azurediskpvc created
    

    Anda dapat memverifikasi status PVC dengan menjalankan perintah berikut:

    Azure CLI
    kubectl describe pvc azurediskpvc
    

Setelah PVC dibuat, PVC siap digunakan oleh pod.

4. Menyebarkan pod dan melampirkan volume persisten

Buat pod menggunakan Fio (Flexible I/O Tester) untuk simulasi benchmarking dan beban kerja, dan tentukan jalur pemasangan untuk volume persisten. Untuk claimName, gunakan nilai nama yang Anda gunakan saat membuat klaim volume persisten.

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

  2. Tempelkan kode berikut dan simpan file.

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

    Azure CLI
    kubectl apply -f acstor-pod.yaml
    

    Anda akan melihat output yang mirip dengan hal berikut:

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

    Azure CLI
    kubectl describe pod fiopod
    kubectl describe pvc azurediskpvc
    
  5. Periksa pengujian fio untuk melihat statusnya saat ini:

    Azure CLI
    kubectl exec -it fiopod -- 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 yang menggunakan Azure Disks sebagai penyimpanannya, dan Anda dapat menggunakannya untuk beban kerja Kubernetes Anda.

Mengelola volume persisten dan kumpulan penyimpanan

Setelah membuat volume persisten, Anda dapat melepaskan dan memasangnya kembali sesuai kebutuhan. Anda juga dapat memperluas atau menghapus kumpulan penyimpanan.

Melepas dan memasang kembali volume persisten

Untuk melepaskan volume persisten, hapus pod tempat volume persisten dilampirkan. Ganti <pod-name> dengan nama pod, misalnya fiopod.

Azure CLI
kubectl delete pods <pod-name>

Untuk memasang kembali volume persisten, cukup referensikan nama klaim volume persisten dalam file manifes YAML seperti yang dijelaskan dalam Menyebarkan pod dan melampirkan volume persisten.

Untuk memeriksa volume persisten mana yang terikat dengan klaim volume persisten, jalankan kubectl get pvc <persistent-volume-claim-name>.

Memperluas kumpulan penyimpanan

Anda dapat memperluas kumpulan penyimpanan yang didukung oleh Azure Disks untuk meningkatkan skala dengan cepat dan tanpa waktu henti. Menyusutkan kumpulan penyimpanan saat ini tidak didukung. Ekspansi kumpulan penyimpanan tidak didukung untuk Ultra Disk atau Premium SSD v2.

Catatan

Memperluas kumpulan penyimpanan dapat meningkatkan biaya Anda untuk Azure Container Storage dan Azure Disks. Lihat halaman harga Azure Container Storage dan Memahami tagihan Azure Container Storage.

Saat ini, ekspansi kumpulan penyimpanan memiliki batasan berikut saat menggunakan Premium_LRS, , Standard_LRS, StandardSSD_LRSPremium_ZRS, dan StandardSSD_ZRS SKU:

  • Jika kumpulan penyimpanan yang ada kurang dari 4 TiB (4.096 GiB), Anda hanya dapat memperluasnya hingga 4.095 GiB. Untuk menghindari kesalahan, jangan mencoba memperluas kumpulan penyimpanan Anda saat ini melebihi 4.095 GiB jika awalnya lebih kecil dari 4 TiB (4.096 GiB). > Kumpulan penyimpanan 4 TiB dapat diperluas hingga kapasitas penyimpanan maksimum yang tersedia.

Ikuti instruksi ini untuk memperluas kumpulan penyimpanan yang ada untuk Azure Disks.

  1. Menggunakan editor teks, buka file manifes YAML yang Anda gunakan untuk membuat kumpulan penyimpanan, misalnya code acstor-storagepool.yaml.

  2. Ganti entri penyimpanan yang ditentukan dalam file manifes YAML dengan nilai yang diinginkan. Nilai ini harus lebih besar dari kapasitas kumpulan penyimpanan saat ini. Misalnya, jika spesifikasi diatur ke storage: 1Ti, ubah menjadi storage: 2Ti. Jika Anda membuat kumpulan penyimpanan yang telah disediakan sebelumnya, tidak akan ada entri penyimpanan karena kumpulan penyimpanan mewarisi ukuran kapasitas dari Azure Disk yang telah disediakan sebelumnya. Jika Anda tidak melihat entri penyimpanan di YAML, tambahkan kode berikut yang menentukan kapasitas penyimpanan yang diinginkan lalu simpan file manifes:

    yml
    spec:
      resources:
        requests:
          storage: 2Ti
    

Catatan

Jika Anda memiliki dua disk di kumpulan penyimpanan dengan kapasitas masing-masing 1 TiB, dan Anda mengedit file manifes YAML untuk dibaca storage: 4Ti, kedua disk akan diperluas ke 2 TiB ketika YAML diterapkan, memberi Anda kapasitas total baru 4 TiB.

  1. Terapkan file manifes YAML untuk memperluas kumpulan penyimpanan.

    Azure CLI
    kubectl apply -f acstor-storagepool.yaml 
    
  2. Jalankan perintah ini untuk memeriksa status kumpulan penyimpanan. Ganti <storage-pool-name> dengan nilai nama kumpulan penyimpanan Anda.

    Azure CLI
    kubectl describe sp <storage-pool-name> -n acstor
    

    Anda akan melihat pesan seperti "kumpulan penyimpanan sedang diperluas." Jalankan perintah lagi setelah beberapa menit dan pesan akan hilang.

  3. Jalankan kubectl get sp -A dan kumpulan penyimpanan harus mencerminkan ukuran baru.

Menghapus kumpulan penyimpanan

Jika Anda ingin menghapus kumpulan penyimpanan, jalankan perintah berikut. Ganti <storage-pool-name> dengan nama kumpulan penyimpanan.

Azure CLI
kubectl delete sp -n acstor <storage-pool-name>

Lihat juga