Gunakan disk ultra Azure di Azure Kubernetes Service

Disk ultra Azure menawarkan throughput tinggi, IOPS tinggi, dan penyimpanan disk latensi rendah yang konsisten untuk aplikasi stateful Anda. Salah satu manfaat utama dari disk ultra adalah kemampuan untuk secara dinamis mengubah performa SSD bersama dengan beban kerja Anda tanpa perlu menghidupkan ulang simpul agen Anda. Disk ultra cocok untuk beban kerja intensif data.

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

Sebelum Anda mulai

Fitur ini hanya dapat diatur pada pembuatan kluster atau saat membuat kumpulan simpul.

Batasan

  • Disk ultra Azure memerlukan kumpulan simpul yang disebarkan di zona ketersediaan dan wilayah yang mendukung disk ini, dan hanya didukung oleh seri VM tertentu. Tinjau tabel yang sesuai di bawah bagian Batasan disk ultra untuk informasi selengkapnya.
  • Disk ultra tidak dapat digunakan dengan beberapa fitur dan fungsionalitas, seperti set ketersediaan atau Azure Disk Encryption. Tinjau Batasan disk Ultra untuk informasi terbaru.

Membuat kluster yang dapat menggunakan disk ultra

Buat kluster AKS yang dapat memanfaatkan Disk ultra Azure dengan menggunakan perintah CLI berikut. --enable-ultra-ssd Gunakan parameter untuk mengatur EnableUltraSSD fitur.

az aks create -g MyResourceGroup -n myAKSCluster -l westus2 --node-vm-size Standard_D2s_v3 --zones 1 2 --node-count 2 --enable-ultra-ssd

Jika Anda ingin membuat kluster tanpa dukungan disk ultra, Anda dapat melakukannya dengan menghilangkan --enable-ultra-ssd parameter .

Mengaktifkan disk ultra pada kluster yang ada

Anda dapat mengaktifkan disk ultra pada kluster yang ada dengan menambahkan kumpulan simpul baru ke kluster Anda yang mendukung disk ultra. Konfigurasikan kumpulan simpul baru untuk menggunakan disk ultra dengan menggunakan --enable-ultra-ssd parameter dengan az aks nodepool add perintah .

Jika Anda ingin membuat kumpulan simpul baru tanpa dukungan untuk disk ultra, Anda dapat melakukannya dengan mengecualikan --enable-ultra-ssd parameter .

Gunakan disk ultra secara dinamis dengan kelas penyimpanan

Untuk menggunakan disk ultra 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 Kube, lihat kelas penyimpanan Kube. Dalam contoh ini, kita akan membuat kelas penyimpanan yang mereferensikan disk ultra.

  1. Buat file bernama azure-ultra-disk-sc.yaml dan salin dalam manifes berikut:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: ultra-disk-sc
    provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21
    volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created 
    parameters:
      skuname: UltraSSD_LRS
      kind: managed
      cachingMode: None
      diskIopsReadWrite: "2000"  # minimum value: 2 IOPS/GiB 
      diskMbpsReadWrite: "320"   # minimum value: 0.032/GiB
    
  2. Buat kelas penyimpanan menggunakan kubectl apply perintah dan tentukan file Anda azure-ultra-disk-sc.yaml .

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

    Output Anda harus menyerupai contoh output berikut:

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

Membuat 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.

  1. Buat file bernama azure-ultra-disk-pvc.yaml dan salin dalam manifes berikut:

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

    Klaim meminta disk bernama ultra-disk yang berukuran 1000 GB dengan akses ReadWriteOnce. Kelas penyimpanan ultra-disk-sc ditentukan sebagai kelas penyimpanannya.

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

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

    Output Anda harus menyerupai contoh output berikut:

    persistentvolumeclaim/ultra-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 ultra-disk untuk memasang disk Azure di jalur /mnt/azure.

  1. Buat file bernama nginx-ultra.yaml dan salin dalam manifes berikut:

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-ultra
    spec:
      containers:
     - name: nginx-ultra
        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: ultra-disk
    
  2. Buat pod menggunakan kubectl apply perintah dan tentukan file Anda nginx-ultra.yaml .

    kubectl apply -f nginx-ultra.yaml
    

    Output Anda harus menyerupai contoh output berikut:

    pod/nginx-ultra created
    

    Sekarang Anda memiliki pod yang sedang berjalan dengan disk Azure Anda terpasang di direktori /mnt/azure.

  3. Lihat detail konfigurasi Anda menggunakan kubectl describe pod perintah dan tentukan file Anda nginx-ultra.yaml .

    kubectl describe pod nginx-ultra
    

    Output Anda harus menyerupai contoh output 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"
    [...]
    

Langkah berikutnya