Secara manual membuat dan menggunakan volume dengan disk Azure di Azure Kubernetes Service (AKS)

Aplikasi berbasis kontainer sering kali perlu mengakses dan mempertahankan data di dalam volume data eksternal. Jika sebuah pod tunggal memerlukan akses ke penyimpanan, Anda dapat menggunakan disk Azure untuk menyajikan volume asli untuk penggunaan aplikasi. Artikel ini menunjukkan cara membuat disk Azure secara manual dan melampirkannya ke sebuah pod di AKS.

Catatan

Sebuah disk Azure hanya dapat dipasang ke sebuah pod tunggal dalam satu waktu. Jika Anda perlu berbagi volume persisten di beberapa pod, gunakan Azure Files.

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

Sebelum Anda mulai

Artikel ini mengasumsikan bahwa Anda sudah memiliki kluster AKS. Jika Anda memerlukan sebuah kluster AKS, lihat mulai cepat AKS menggunakan Azure CLI atau menggunakan portal Microsoft Azure.

Anda juga membutuhkan Azure CLI versi 2.0.59 atau versi yang lebih baru yang telah dipasang dan dikonfigurasikan. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan versinya, lihat Memasang CLI Azure.

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.

Untuk artikel ini, buat disk di simpul grup sumber daya. Pertama, dapatkan nama grup sumber daya dengan perintah az aks show dan tambahkan parameter kueri --query nodeResourceGroup. Contoh berikut mendapatkan simpul grup sumber daya untuk nama kluster AKS myAKSCluster dalam nama grup sumber daya myResourceGroup:

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

MC_myResourceGroup_myAKSCluster_eastus

Sekarang buat sebuah disk menggunakan perintah az disk create. Tentukan nama simpul grup sumber daya yang diperoleh di perintah sebelumnya, lalu nama untuk sumber daya disk, seperti myAKSDisk. Contoh berikut untuk membuat sebuah disk 20 GiB, dan menghasilkan ID disk setelah 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

Disk 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 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. ID disk ini digunakan untuk memasang disknya pada langkah berikutnya.

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

Memasang disk sebagai volume

Untuk memasang disk Azure ke dalam pod Anda, konfigurasikan volume di dalam spesifikasi kontainer. Buat file baru bernama azure-disk-pod.yaml dengan konten berikut. Perbarui diskName dengan nama disk yang dibuat pada langkah sebelumnya, dan diskURI dengan ID disk yang ditunjukkan dalam output perintah buat disk. Jika diinginkan,perbarui mountPath, yang mana adalah jalur tempat disk Azure dipasang di pod. Untuk kontainer Windows Server, tentukan sebuah mountPath menggunakan konvensi jalur Windows, seperti 'D:' .

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  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
        azureDisk:
          kind: Managed
          diskName: myAKSDisk
          diskURI: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk

Gunakan perintah kubectl untuk membuat pod.

kubectl apply -f azure-disk-pod.yaml

Anda sekarang memiliki pod yang sedang berjalan dengan disk Azure yang dipasang di /mnt/azure. Anda dapat menggunakan kubectl describe pod mypod untuk memverifikasi bahwa disk telah berhasil dipasang. Contoh output ringkas berikut menunjukkan volume yang dipasang di kontainernya:

[...]
Volumes:
  azure:
    Type:         AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod)
    DiskName:     myAKSDisk
    DiskURI:      /subscriptions/<subscriptionID/resourceGroups/MC_myResourceGroupAKS_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
    Kind:         Managed
    FSType:       ext4
    CachingMode:  ReadWrite
    ReadOnly:     false
  default-token-z5sd7:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-z5sd7
    Optional:    false
[...]
Events:
  Type    Reason                 Age   From                               Message
  ----    ------                 ----  ----                               -------
  Normal  Scheduled              1m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-79590246-0
  Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-z5sd7"
  Normal  SuccessfulMountVolume  41s   kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "azure"
[...]

Langkah berikutnya

Untuk praktik terbaik terkait, lihat Praktik terbaik untuk penyimpanan dan pencadangan di AKS.

Untuk informasi lebih lanjut tentang kluster AKS yang berinteraksi dengan disk Azure, lihat plugin Kube untuk Disk Azure.