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_LRS StandardSSD_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 (PremiumV2_LRS dan UltraSSD_LRS hanya mendukung None mode penembolokan) |
None , , ReadOnly ReadWrite |
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 , , DenyAll AllowPrivate |
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:
- Kelas penyimpanan default memprovisikan Azure Disk SSD standar.
- SSD standar mendukung penyimpanan Standar dan memberikan penyimpanan hemat biaya sambil tetap memberikan performa yang andal.
- 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.
- 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
- Efektif dimulai dengan Kubernetes versi 1.29, ketika Anda menyebarkan kluster Azure Kubernetes Service (AKS) di beberapa zona ketersediaan, AKS sekarang menggunakan penyimpanan redundan zona (ZRS) untuk membuat disk terkelola dalam kelas penyimpanan bawaan.
- ZRS memastikan replikasi sinkron disk terkelola Azure Anda di beberapa zona ketersediaan Azure di wilayah yang Anda pilih. Strategi redundansi ini meningkatkan ketahanan aplikasi Anda dan melindungi data Anda dari kegagalan pusat data.
- Namun, penting untuk dicatat bahwa penyimpanan zona redundan (ZRS) memiliki biaya yang lebih tinggi dibandingkan dengan penyimpanan redundan lokal (LRS). Jika pengoptimalan biaya adalah prioritas, Anda dapat membuat kelas penyimpanan baru dengan parameter nama SKU LRS dan menggunakannya dalam Klaim Volume Persisten (PVC).
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.
Buat file bernama
azure-pvc.yaml
, kemudian salin dalam manifes berikut. Klaim meminta disk bernamaazure-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.
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.
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 [...]
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
Buat pod menggunakan
kubectl apply
perintah .kubectl apply -f azure-pvc-disk.yaml
Output perintah menyerupai contoh berikut:
pod/mypod created
Sekarang Anda memiliki pod yang sedang berjalan dengan Azure Disk yang terpasang di direktori
/mnt/azure
. Periksa konfigurasi pod menggunakankubectl 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 , , 2 3 |
No | Kosong (tanpa partisi) - Pastikan format partisi sama -part1 |
volumeAttributes.cachingMode | Setelan cache host disk | None , , ReadOnly ReadWrite |
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.
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
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
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
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
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
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
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
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
- Untuk mempelajari cara menggunakan driver CSI untuk penyimpanan Azure Disks, lihat Menggunakan penyimpanan Azure Disks dengan driver CSI.
- Untuk praktik terbaik terkait, lihat Praktik terbaik untuk penyimpanan dan pencadangan di AKS.
Azure Kubernetes Service