Bagikan melalui


Menggunakan disk Azure Premium SSD v2 di Azure Kubernetes Service

Disk Azure Premium SSD v2 menawarkan beban kerja perusahaan intens IO, latensi disk submillisecond yang konsisten, dan IOPS dan throughput tinggi. Performa (kapasitas, throughput, dan IOPS) disk SSD v2 Premium dapat dikonfigurasi secara independen kapan saja, sehingga memudahkan lebih banyak skenario menjadi hemat biaya sembari memenuhi kebutuhan performa.

Artikel ini menjelaskan cara mengonfigurasi kluster AKS baru atau yang sudah ada untuk menggunakan disk Azure Premium SSD v2.

Sebelum Anda mulai

Sebelum membuat atau meningkatkan kluster AKS yang dapat menggunakan disk Azure Premium SSD v2, Anda perlu membuat kluster AKS di wilayah dan zona ketersediaan yang sama yang mendukung Penyimpanan Premium dan melampirkan disk dengan mengikuti langkah-langkah di bawah ini.

Untuk kluster AKS yang ada, Anda dapat mengaktifkan disk Premium SSD v2 dengan menambahkan kumpulan simpul baru ke kluster Anda, lalu melampirkan disk dengan mengikuti langkah-langkah di bawah ini.

Penting

Disk Azure Premium SSD v2 memerlukan kumpulan simpul yang disebarkan di wilayah yang mendukung disk ini. Untuk daftar wilayah yang didukung, lihat Wilayah yang didukung disk Premium SSD v2.

Batasan

  • Disk Azure Premium SSD v2 memiliki batasan tertentu yang perlu Anda waspadai. Untuk daftar lengkapnya, lihat Batasan Premium SSD v2.

Menggunakan disk Premium SSD v2 secara dinamis dengan kelas penyimpanan

Untuk menggunakan disk Premium SSD v2 dalam penyebaran atau set stateful, Anda dapat menggunakan kelas penyimpanan untuk provisi dinamis.

Membuat kelas penyimpanan

Kelas penyimpanan digunakan untuk menentukan bagaimana sebuah unit penyimpanan dibuat secara dinamis dengan volume persisten. Untuk informasi lebih lanjut tentang kelas penyimpanan Kubernetes, lihat Kelas Penyimpanan Kubernetes.

Dalam contoh ini, Anda membuat kelas penyimpanan yang mereferensikan disk Premium SSD v2. Buat file bernama azure-pv2-disk-sc.yaml, dan salin dalam manifes berikut.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: premium2-disk-sc
parameters:
   cachingMode: None
   skuName: PremiumV2_LRS
   DiskIOPSReadWrite: "4000"
   DiskMBpsReadWrite: "1000"
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

Buat kelas penyimpanan dengan perintah kubectl apply dan tentukan file azure-pv2-disk-sc.yaml Anda:

kubectl apply -f azure-pv2-disk-sc.yaml

Output perintah menyerupai contoh berikut:

storageclass.storage.k8s.io/premium2-disk-sc created

Buat klaim volume persisten

Klaim volume persisten (PVC) digunakan untuk mem-provisikan penyimpanan secara otomatis berdasarkan kelas penyimpanan. Dalam hal ini, PVC dapat menggunakan kelas penyimpanan yang dibuat sebelumnya untuk membuat disk ultra.

Buat file bernama azure-pv2-disk-pvc.yaml, dan salin dalam manifes berikut. Klaim meminta disk bernama premium2-disk yang berukuran 1000 GB dengan akses ReadWriteOnce. Kelas penyimpanan premium2-disk-sc ditentukan sebagai kelas penyimpanan.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: premium2-disk
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: premium2-disk-sc
  resources:
    requests:
      storage: 1000Gi

Buat klaim volume persisten dengan perintah kubectl apply dan tentukan file azure-pv2-disk-pvc.yaml Anda:

kubectl apply -f azure-pv2-disk-pvc.yaml

Output perintah menyerupai contoh berikut:

persistentvolumeclaim/premium2-disk created

Menggunakan volume persisten

Setelah klaim volume persisten dibuat dan disk berhasil tersedia, sebuah pod dapat dibuat dengan akses ke disk. Manifes berikut membuat pod NGINX dasar yang menggunakan klaim volume persisten bernama premium2-disk untuk memasang disk Azure di jalur /mnt/azure.

Buat file bernama nginx-premium2.yaml, dan salin dalam manifes berikut.

kind: Pod
apiVersion: v1
metadata:
  name: nginx-premium2
spec:
  containers:
  - name: nginx-premium2
    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
  volumes:
    - name: volume
      persistentVolumeClaim:
        claimName: premium2-disk

Buat pod dengan perintah kubectl apply, seperti yang ditunjukkan pada contoh berikut:

kubectl apply -f nginx-premium2.yaml

Output perintah menyerupai contoh berikut:

pod/nginx-premium2 created

Sekarang Anda memiliki pod yang sedang berjalan dengan disk Azure Anda terpasang di direktori /mnt/azure. Konfigurasi ini dapat dilihat saat memeriksa pod melalui kubectl describe pod nginx-premium2, seperti yang ditunjukkan pada contoh yang telah diringkas berikut:

kubectl describe pod nginx-premium2

[...]
Volumes:
  volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  premium2-disk
    ReadOnly:   false
  kube-api-access-sh59b:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason                  Age    From                     Message
  ----    ------                  ----   ----                     -------
  Normal  Scheduled               7m58s  default-scheduler        Successfully assigned default/nginx-premium2 to aks-agentpool-12254644-vmss000006
  Normal  SuccessfulAttachVolume  7m46s  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-ff39fb64-1189-4c52-9a24-e065b855b886"
  Normal  Pulling                 7m39s  kubelet                  Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine"
  Normal  Pulled                  7m38s  kubelet                  Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" in 1.192915667s
  Normal  Created                 7m38s  kubelet                  Created container nginx-premium2
  Normal  Started                 7m38s  kubelet                  Started container nginx-premium2
[...]

Mengatur batas IOPS dan throughput

Operasi Input/Output Per Detik (IOPS) dan batas throughput untuk disk Azure Premium v2 SSD saat ini tidak didukung melalui AKS. Untuk menyesuaikan performa, Anda dapat menggunakan perintah Azure CLI az disk update dan termasuk --disk-iops-read-write parameter dan --disk-mbps-read-write .

Contoh berikut memperbarui disk IOPS baca/tulis ke 5000 dan Mbps menjadi 200. Untuk --resource-group, nilainya harus merupakan grup sumber daya kedua yang dibuat secara otomatis untuk menyimpan simpul pekerja AKS dengan konvensi penamaan MC_resourcegroupname_clustername_location. Untuk informasi selengkapnya, lihat Mengapa dua grup sumber daya dibuat dengan AKS?.

Nilai untuk --name parameter adalah nama volume yang dibuat menggunakan StorageClass, dan dimulai dengan pvc-. Untuk mengidentifikasi nama disk, Anda dapat menjalankan kubectl get pvc atau menavigasi ke grup sumber daya sekunder di portal untuk menemukannya. Lihat mengelola sumber daya dari portal Azure untuk mempelajari selengkapnya.

az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200  

Langkah berikutnya