Membuat dan menggunakan volume dengan Azure Disks di Azure Kubernetes Service (AKS)

Volume persisten mewakili bagian penyimpanan yang disediakan untuk digunakan dengan pod Kubernetes. Anda dapat menggunakan volume persisten dengan satu atau banyak pod, dan Anda dapat menyediakannya secara dinamis atau statis. Artikel ini menunjukkan cara membuat volume persisten secara dinamis dengan Azure Disks di kluster Azure Kubernetes Service (AKS).

Catatan

Sebuah disk Azure hanya dapat dipasang dengan mode Akses berjenis ReadWriteOnce, yang membuatnya tersedia untuk satu simpul di AKS. Mode akses ini masih memungkinkan beberapa pod untuk mengakses volume ketika pod berjalan pada node yang sama. Untuk informasi selengkapnya, lihat Mode akses Kubernetes PersistentVolume.

Artikel ini menunjukkan cara:

  • Bekerja dengan volume persisten dinamis (PV) dengan menginstal driver Antarmuka Penyimpanan Kontainer (CSI) dan secara dinamis membuat satu atau beberapa disk terkelola Azure untuk dilampirkan ke pod.
  • Bekerja dengan PV statis dengan membuat satu atau beberapa disk terkelola Azure atau menggunakan yang sudah ada dan melampirkannya ke pod.

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

Sebelum Anda mulai

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

  • Driver Azure Disk CSI memiliki batas volume per simpul. Jumlah volume berubah berdasarkan ukuran kumpulan simpul/simpul. Jalankan perintah kubectl get untuk menentukan jumlah volume yang dapat dialokasikan per simpul:

    kubectl get CSINode <nodename> -o yaml
    

Memprovisikan volume secara dinamis

Bagian ini menyediakan panduan untuk administrator kluster yang ingin menyediakan satu atau beberapa volume persisten yang menyertakan detail penyimpanan Azure Disk untuk digunakan oleh beban kerja. Klaim volume persisten (PVC) menggunakan objek kelas penyimpanan untuk menyediakan kontainer penyimpanan Azure Disk secara dinamis.

Parameter kelas penyimpanan untuk PersistentVolumes dinamis

Tabel berikut menyertakan parameter yang dapat Anda gunakan untuk menentukan kelas penyimpanan kustom untuk PersistentVolumeClaim Anda.

Nama Makna Nilai yang Tersedia Wajib Nilai default
skuName Jenis akun penyimpanan Azure Disks (alias: storageAccountType) Standard_LRS, , Premium_LRSStandardSSD_LRS, PremiumV2_LRS, UltraSSD_LRS, , Premium_ZRS,StandardSSD_ZRS No StandardSSD_LRS
fsType Jenis Sistem File ext4, ext3, ext2, xfs, btrfs untuk Linux, ntfs untuk Windows No ext4 untuk Linux, ntfs untuk Windows
cachingMode Pengaturan Cache Host Disk Data Azure None, , ReadOnlyReadWrite No ReadOnly
ResourceGroup Tentukan grup sumber daya untuk Disk Azure Nama grup sumber daya yang ada No Jika kosong, driver menggunakan nama grup sumber daya yang sama dengan kluster AKS saat ini
DiskIOPSReadWrite Disk UltraSSD atau Kemampuan IOPS SSD v2 Premium (minimum: 2 IOPS/GiB) 100~160000 No 500
DiskMBpsReadWrite Disk UltraSSD atau Kemampuan Throughput SSD v2 Premium (minimum: 0,032/GiB) 1~2000 No 100
LogicalSectorSize Ukuran sektor logis dalam byte untuk disk ultra. Nilai yang didukung adalah 512 dan 4096. 4096 adalah default. 512, 4096 No 4096
tag Tag Azure Disk Format tag: key1=val1,key2=val2 No ""
diskEncryptionSetID ResourceId dari set enkripsi disk yang akan digunakan untuk mengaktifkan enkripsi saat tidak aktif format: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} No ""
diskEncryptionType Jenis enkripsi set enkripsi disk. EncryptionAtRestWithCustomerKey(secara default), EncryptionAtRestWithPlatformAndCustomerKeys No ""
writeAcceleratorEnabled Akselerator Tulis di Disk Azure true, false No ""
networkAccessPolicy Properti NetworkAccessPolicy untuk mencegah pembuatan URI SAS untuk disk atau snapshot AllowAll, , DenyAllAllowPrivate No AllowAll
diskAccessID ID Sumber Daya Azure dari sumber daya DiskAccess untuk menggunakan titik akhir privat pada disk No ``
enableBursting Aktifkan bursting sesuai permintaan di luar target performa disk yang disediakan. Bursting sesuai permintaan hanya boleh diterapkan ke disk Premium dan ketika ukuran disk > 512 GB. Disk ultra dan bersama tidak didukung. Bursting dinonaktifkan secara default. true, false No false
useragent Agen pengguna yang digunakan untuk atribusi penggunaan pelanggan No Useragent yang dihasilkan diformat driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Tentukan ID langganan Azure tempat Azure Disk dibuat. ID langganan Azure No Jika tidak kosong, resourceGroup harus disediakan.
--- Parameter berikut hanya untuk v2 --- --- ---
maxShares Jumlah total pemasangan disk bersama yang diizinkan untuk disk. Mengatur nilai ke 2 atau lebih memungkinkan replika lampiran. Nilai yang didukung bergantung pada ukuran disk. Lihat Berbagi disk terkelola Azure untuk nilai yang didukung. No 1
maxMountReplicaCount Jumlah lampiran replika yang akan dipertahankan. Nilai ini harus dalam rentang [0..(maxShares - 1)] No Jika accessMode adalah ReadWriteMany, defaultnya adalah 0. Jika tidak, defaultnya adalah maxShares - 1

Kelas penyimpanan bawaan

Kelas penyimpanan menentukan bagaimana satuan penyimpanan dibuat secara dinamis dengan volume persisten. Untuk informasi lebih lanjut tentang kelas penyimpanan Kube, lihat kelas penyimpanan Kube.

Setiap kluster AKS mencakup empat kelas penyimpanan yang dibuat sebelumnya, dua di antaranya dikonfigurasi untuk bekerja dengan Azure Disks:

  1. Kelas penyimpanan default memprovisikan Azure Disk SSD standar.
    • SSD standar mendukung penyimpanan Standar dan memberikan penyimpanan hemat biaya sambil tetap memberikan performa yang andal.
  2. Kelas penyimpanan managed-csi-premium memprovisikan Azure Disk premium.
    • Disk berkinerja tinggi dan latensi rendah berbasis SSD mengembalikan disk Premium. VM ideal untuk VM yang menjalankan beban kerja produksi. Saat Anda menggunakan driver Azure Disk CSI di AKS, Anda juga dapat menggunakan managed-csi kelas penyimpanan, yang didukung oleh penyimpanan redundan lokal (LRS) SSD Standar.

Mengurangi ukuran PVC tidak didukung karena risiko kehilangan data. Anda dapat mengedit kelas penyimpanan yang ada menggunakan kubectl edit sc perintah , atau Anda dapat membuat kelas penyimpanan kustom Anda sendiri. Misalnya, jika Anda ingin menggunakan sebuah disk berukuran 4 TiB, Anda harus membuat kelas penyimpanan yang menentukan cachingmode: None karena penembolokan disk tidak didukung untuk disk berukuran 4 TiB dan yang lebih besar. Untuk informasi selengkapnya tentang kelas penyimpanan dan pembuatan kelas penyimpanan Anda sendiri, lihat Opsi penyimpanan untuk aplikasi di AKS.

Anda dapat melihat kelas penyimpanan yang dibuat sebelumnya menggunakan kubectl get sc perintah . Contoh berikut menunjukkan kelas penyimpanan yang dibuat sebelumnya yang tersedia dalam kluster AKS:

kubectl get sc

Output perintah menyerupai contoh berikut:

NAME                PROVISIONER                AGE
default (default)   disk.csi.azure.com         1h
managed-csi         disk.csi.azure.com         1h

Catatan

Klaim volume persisten ditentukan dalam GiB tetapi disk terkelola Azure ditagih oleh SKU untuk ukuran tertentu. SKU ini berkisar dari 32GiB untuk disk S4 atau P4 hingga 32TiB untuk disk S80 atau P80 (dalam pratinjau). Performa throughput dan IOPS dari disk yang dikelola Premium tergantung pada baik SKU maupun ukuran instans simpul di kluster AKS. Untuk informasi selengkapnya, lihat Harga dan performa disk terkelola.

Buat klaim volume persisten

Klaim volume persisten (PVC) secara otomatis menyediakan penyimpanan berdasarkan kelas penyimpanan. Dalam hal ini, PVC dapat menggunakan salah satu kelas penyimpanan yang dibuat sebelumnya untuk membuat disk terkelola Azure standar atau premium.

  1. Buat file bernama azure-pvc.yaml, kemudian salin dalam manifes berikut. Klaim meminta disk bernama azure-managed-disk berukuran 5 GB dengan akses ReadWriteOnce . Kelas penyimpanan managed-csi ditentukan sebagai kelas penyimpanan.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
        name: azure-managed-disk
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: managed-csi
      resources:
        requests:
          storage: 5Gi
    

Tip

Untuk membuat disk yang menggunakan penyimpanan premium, gunakan storageClassName: managed-csi-premium alih-alih managed-csi.

  1. Buat klaim volume persisten menggunakan kubectl apply perintah dan tentukan file azure-pvc.yaml Anda.

    kubectl apply -f azure-pvc.yaml
    

    Output perintah menyerupai contoh berikut:

    persistentvolumeclaim/azure-managed-disk created
    

Menggunakan volume persisten

Setelah Anda membuat klaim volume persisten, Anda harus memverifikasi bahwa volume tersebut memiliki status Pending. Status Pending menunjukkan siap digunakan oleh pod.

  1. Verifikasi status PVC menggunakan kubectl describe pvc perintah .

    kubectl describe pvc azure-managed-disk
    

    Output perintah menyerupai contoh ringkas berikut:

    Name:            azure-managed-disk
    Namespace:       default
    StorageClass:    managed-csi
    Status:          Pending
    [...]
    
  2. Buat file bernama azure-pvc-disk.yaml, kemudian salin dalam manifes berikut. Manifes ini membuat pod NGINX dasar yang menggunakan klaim volume persisten bernama azure-managed-disk untuk memasang Disk Azure di jalur /mnt/azure. Untuk kontainer Windows Server, tentukan mountPath menggunakan konvensi jalur Windows, seperti 'D:'.

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
        - name: mypod
          image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          volumeMounts:
            - mountPath: "/mnt/azure"
              name: volume
              readOnly: false
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-managed-disk
    
  3. Buat pod menggunakan kubectl apply perintah .

     kubectl apply -f azure-pvc-disk.yaml
    

    Output perintah menyerupai contoh berikut:

    pod/mypod created
    
  4. Sekarang Anda memiliki pod yang sedang berjalan dengan Azure Disk yang terpasang di direktori /mnt/azure. Periksa konfigurasi pod menggunakan kubectl describe perintah .

     kubectl describe pod mypod
    

    Output perintah menyerupai contoh berikut:

    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  azure-managed-disk
        ReadOnly:   false
       default-token-smm2n:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-smm2n
        Optional:    false
    [...]
     Events:
      Type    Reason                 Age   From                               Message
      ----    ------                 ----  ----                               -------
      Normal  Scheduled              2m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-79590246-0
      Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-smm2n"
      Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242"
    [...]
    

Menggunakan disk ultra Azure

Untuk menggunakan disk ultra Azure, lihat Menggunakan disk ultra di Azure Kubernetes Service (AKS).

Menggunakan tag Azure

Untuk detail selengkapnya tentang menggunakan tag Azure, lihat Menggunakan tag Azure di Azure Kubernetes Service (AKS).

Provisi volume secara statis

Bagian ini menyediakan panduan untuk administrator kluster yang ingin membuat satu atau beberapa volume persisten yang menyertakan detail Azure Disk untuk digunakan oleh beban kerja.

Parameter provisi statis untuk volume persisten

Tabel berikut menyertakan parameter yang dapat Anda gunakan untuk menentukan volume persisten.

Nama Makna Nilai yang Tersedia Wajib Nilai default
volumeHandle URI disk Azure /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} Ya T/A
volumeAttributes.fsType Jenis sistem file ext4, ext3, ext2, xfs, btrfs untuk Linux, ntfs untuk Windows No ext4 untuk Linux, ntfs untuk Windows
volumeAttributes.partition Nomor partisi disk yang ada (hanya didukung dalam Linux) 1, , 23 No Kosong (tanpa partisi)
- Pastikan format partisi sama -part1
volumeAttributes.cachingMode Setelan cache host disk None, , ReadOnlyReadWrite No ReadOnly

Membuat disk Azure

Saat Anda membuat disk Azure untuk penggunaan dengan AKS, Anda dapat membuat sumber daya disk grup sumber daya simpul. Pendekatan ini mengizinkan kluster AKS untuk mengakses dan mengelola sumber daya disk. Jika Anda membuat disk di dalam grup sumber daya yang terpisah, Anda harus memberikan peran Contributor ke grup sumber daya disk bagi identitas terkelola Azure Kubernetes Service (AKS) untuk kluster Anda.

  1. Identifikasi nama grup sumber daya menggunakan az aks show perintah dan tambahkan --query nodeResourceGroup parameter .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    Output perintah menyerupai contoh berikut:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Buat disk menggunakan az disk create perintah . Tentukan nama grup sumber daya simpul dan nama untuk sumber daya disk, seperti myAKSDisk. Contoh berikut untuk membuat disk 20GiB, dan menghasilkan ID disk yang telah dibuat. Jika Anda perlu membuat disk untuk penggunaan dengan kontainer Windows Server, tambahkan parameter --os-type windows untuk melakukan format disk dengan benar.

    az disk create \
      --resource-group MC_myResourceGroup_myAKSCluster_eastus \
      --name myAKSDisk \
      --size-gb 20 \
      --query id --output tsv
    

    Catatan

    Azure Disks ditagih oleh SKU untuk ukuran tertentu. SKU ini berkisar dari 32GiB untuk disk S4 atau P4 hingga 32TiB untuk disk S80 atau P80 (dalam pratinjau). Performa throughput dan IOPS dari disk Premium terkelola tergantung pada baik SKU maupun ukuran instans simpul di kluster AKS. Lihat Harga dan Performa Disk Terkelola.

    ID sumber daya disk ditampilkan setelah perintah berhasil diselesaikan, seperti yang ditunjukkan dalam contoh output berikut. Anda menggunakan ID disk untuk memasang disk di bagian berikutnya.

    /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
    

Memasangkan disk sebagai volume

  1. Buat file pv-azuredisk.yaml dengan PersistentVolume. Memperbarui volumeHandle dengan ID sumber daya disk dari langkah sebelumnya. Untuk kontainer Windows Server, tentukan ntfs untuk parameter fsType.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: disk.csi.azure.com
      name: pv-azuredisk
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: managed-csi
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
        volumeAttributes:
          fsType: ext4
    
  2. Buat file pvc-azuredisk.yaml dengan PersistentVolumeClaim yang menggunakan PersistentVolume.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. Buat PersistentVolume dan PersistentVolumeClaim menggunakan kubectl apply perintah dan referensikan dua file YAML yang Anda buat.

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. Verifikasi PersistentVolumeClaim Anda dibuat dan terikat ke PersistentVolume menggunakan kubectl get pvc perintah .

    kubectl get pvc pvc-azuredisk
    

    Output perintah menyerupai contoh berikut:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    
  5. Buat file azure-disk-pod.yaml untuk mereferensikan PersistentVolumeClaim Anda. Untuk kontainer Windows Server, tentukan mountPath menggunakan konvensi jalur Windows, seperti 'D:'.

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      containers:
      - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        name: mypod
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
          - name: azure
            mountPath: /mnt/azure
      volumes:
        - name: azure
          persistentVolumeClaim:
            claimName: pvc-azuredisk
    
  6. Terapkan konfigurasi dan pasang volume menggunakan kubectl apply perintah .

    kubectl apply -f azure-disk-pod.yaml
    

Membersihkan sumber daya

Setelah selesai dengan sumber daya yang dibuat dalam artikel ini, Anda dapat menghapusnya menggunakan kubectl delete perintah .

# Remove the pod
kubectl delete -f azure-pvc-disk.yaml

# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml

Langkah berikutnya