Azure Kubernetes Service'te (AKS) Azure Disk Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü kullanma
Azure Diskler Kapsayıcı Depolama Arabirimi (CSI) sürücüsü, Azure Disk'in yaşam döngüsünü yönetmek için Azure Kubernetes Service (AKS) tarafından kullanılan CSI belirtimi uyumlu bir sürücüdür.
CSI, Kubernetes'te kapsayıcılı iş yüklerine rastgele blok ve dosya depolama sistemlerinin kullanıma sunar. AKS, CSI'yi benimseyerek ve kullanarak artık Kubernetes'te yeni depolama sistemlerini kullanıma sunma veya mevcut depolama sistemlerini iyileştirme amacıyla eklentiler yazabilir, dağıtabilir ve yineleyebilir. AKS'de CSI sürücülerinin kullanılması, çekirdek Kubernetes koduna dokunmaktan ve yayın döngülerini beklemekten kaçınıyor.
CSI sürücü desteğine sahip bir AKS kümesi oluşturmak için bkz . AKS'de CSI sürücüsünü etkinleştirme. Bu makalede Azure Disk CSI sürücüsü sürüm 1'in nasıl kullanılacağı açıklanmaktadır.
Not
Azure Disk CSI sürücüsü v2 (önizleme), ölçeklenebilirliği artırır ve pod yük devretme gecikme süresini azaltır. Birden çok küme düğümünde ek çoğaltmaları sağlamak için paylaşılan diskleri kullanır ve pod yük devretmesinde ek çoğaltması olan bir düğümün seçildiğinden emin olmak için pod zamanlayıcısıyla tümleşir. Azure Disk CSI sürücüsü v2 (önizleme) ayrıca performansta ince ayar yapabilme olanağı sağlar. Önizlemeye katılmak istiyorsanız bir istek gönderin: https://aka.ms/DiskCSIv2Preview. Bu önizleme sürümü bir hizmet düzeyi sözleşmesi olmadan sağlanır ve önizleme aşamasındayken zaman zaman hataya neden olan değişiklikler bekleyebilirsiniz. Üretim iş yükleri için önizleme sürümü önerilmez. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri Ek Kullanım Koşulları.
Not
Ağaç içi sürücüler , çekirdek Kubernetes kodunun parçası olan geçerli depolama sürücülerini ve eklentiler olan yeni CSI sürücülerini ifade eder.
Azure Disk CSI sürücü özellikleri
Ağaç içi sürücü özelliklerine ek olarak, Azure Disk CSI sürücüsü aşağıdaki özellikleri destekler:
- Eşzamanlı disk ekleme ve ayırma sırasında performans iyileştirmeleri
- Ağaç içi sürücüler diskleri seri olarak ekler veya ayırırken, CSI sürücüleri diskleri toplu olarak ekler veya ayırır. Bir düğüme bağlı birden çok disk olduğunda önemli bir gelişme olur.
- Premium SSD v1 ve v2 desteklenir.
PremiumV2_LRS
yalnızca önbelleğe alma modunu desteklerNone
- Alanlar arası yedekli depolama (ZRS) disk desteği
Premium_ZRS
,StandardSSD_ZRS
disk türleri desteklenir. ZRS diski, disk biriminin belirli bir düğümle aynı bölgede birlikte bulunması kısıtlaması olmadan bölge veya bölge dışı düğümde zamanlanabilir. Hangi bölgelerin desteklendiği de dahil olmak üzere daha fazla bilgi için bkz . Yönetilen diskler için alanlar arası yedekli depolama.
- Anlık Görüntü
- Birim kopyası
- Disk PV'lerini kapalı kalma süresi olmadan yeniden boyutlandırma
Not
Kullanılan VM SKU'sunun bağlı olarak, Azure Disk CSI sürücüsünün düğüm başına birim sınırı olabilir. Bazı güçlü VM'ler için (örneğin, 16 çekirdek), düğüm başına sınır 64 birimdir. VM SKU'su başına sınırı belirlemek için, sunulan her VM SKU'su için En fazla veri diski sütununu gözden geçirin. Sunulan VM SKU'larının listesi ve bunların ilgili ayrıntılı kapasite sınırları için bkz . Genel amaçlı sanal makine boyutları.
Azure Diskler ile CSI kalıcı birimleri kullanma
Kalıcı birim (PV), Kubernetes podlarıyla kullanılmak üzere sağlanan bir depolama parçasını temsil eder. Pv, bir veya birden çok pod tarafından kullanılabilir ve dinamik veya statik olarak sağlanabilir. Bu makalede, AKS kümesindeki tek bir pod tarafından kullanılmak üzere Azure disk ile dinamik olarak NASıL VM oluşturulacağı gösterilmektedir. Statik sağlama için bkz . Azure Diskleri ile statik birim oluşturma.
Kubernetes birimleri hakkında daha fazla bilgi için bkz . AKS'deki uygulamalar için depolama seçenekleri.
Yerleşik depolama sınıflarını kullanarak azure diskleri sanal makinelerini dinamik olarak oluşturma
Depolama sınıfı, bir depolama biriminin kalıcı bir birimle dinamik olarak nasıl oluşturulduğunu tanımlamak için kullanılır. Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz . Kubernetes depolama sınıfları.
AKS üzerinde Azure Disk CSI sürücüsünü kullandığınızda, Azure Disk CSI depolama sürücüsünü kullanan iki yerleşik StorageClasses
daha vardır. Diğer CSI depolama sınıfları, ağaç içi varsayılan depolama sınıflarıyla birlikte kümeyle birlikte oluşturulur.
managed-csi
: Yönetilen disk oluşturmak için Azure Standart SSD yerel olarak yedekli depolama (LRS) kullanır. Birden çok kullanılabilirlik alanına dağıtılan Azure Kubernetes Service (AKS) kümelerinde Kubernetes sürüm 1.29'dan itibaren geçerli olan bu depolama sınıfı, yönetilen diskler oluşturmak için Azure Standart SSD alanlar arası yedekli depolama (ZRS) kullanır.managed-csi-premium
: Yönetilen disk oluşturmak için Azure Premium LRS kullanır. Birden çok kullanılabilirlik alanına dağıtılan Azure Kubernetes Service (AKS) kümelerinde Kubernetes sürüm 1.29'dan itibaren geçerli olan bu depolama sınıfı, yönetilen diskler oluşturmak için Azure Premium alanlar arası yedekli depolama (ZRS) kullanır.
Her iki depolama sınıfındaki geri kazanma ilkesi, ilgili PV silindiğinde temel alınan Azure Disklerinin silinmesini sağlar. Depolama sınıfları ayrıca PV'leri genişletilebilir olacak şekilde yapılandırabilir. Kalıcı birim beyanını (PVC) yeni boyutla düzenlemeniz yeterlidir.
Bu depolama sınıflarını kullanmak için, bunlara başvuran ve kullanan bir PVC ve ilgili pod oluşturun. Pvc, depolama sınıfına göre depolamayı otomatik olarak sağlamak için kullanılır. PVC, istenen SKU ve boyut için Azure tarafından yönetilen bir disk oluşturmak için önceden oluşturulmuş depolama sınıflarından birini veya kullanıcı tanımlı bir depolama sınıfını kullanabilir. Pod tanımı oluşturduğunuzda, istenen depolamayı istemek için PVC belirtilir.
kubectl apply komutunu çalıştırarak örnek bir pod ve ilgili PVC oluşturun:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/pvc-azuredisk-csi.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/nginx-pod-azuredisk.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azuredisk created
pod/nginx-azuredisk created
Pod çalışır durumda olduğunda, adlı test.txt
yeni bir dosya oluşturmak için aşağıdaki komutu çalıştırın.
kubectl exec nginx-azuredisk -- touch /mnt/azuredisk/test.txt
Diskin doğru şekilde bağlandığını doğrulamak için aşağıdaki komutu çalıştırın ve çıktıda dosyayı gördüğünüzden test.txt
emin olun:
kubectl exec nginx-azuredisk -- ls /mnt/azuredisk
lost+found
outfile
test.txt
Özel depolama sınıfı oluşturma
Varsayılan depolama sınıfları çoğu yaygın senaryo için uygundur. Bazı durumlarda kendi depolama sınıfınızın kendi parametrelerinizle özelleştirilmesini isteyebilirsiniz. Örneğin, sınıfını volumeBindingMode
değiştirmek isteyebilirsiniz.
PVC oluşturulduktan hemen sonra gerçekleşmesini garanti eden bir volumeBindingMode: Immediate
sınıf kullanabilirsiniz. Örneğin kullanılabilirlik alanlarını kullanırken düğüm havuzlarınız topolojisi kısıtlandığında, podun zamanlama gereksinimleri hakkında bilgi sahibi olmadan sanal makineler bağlanır veya sağlanır.
Bu senaryoyu ele almak için, PVC kullanan bir pod oluşturulana kadar PV'nin bağlanmasını ve sağlanmasını geciktiren kullanabilirsiniz volumeBindingMode: WaitForFirstConsumer
. Bu şekilde BD uyumlu olur ve pod'un zamanlama kısıtlamaları tarafından belirtilen kullanılabilirlik alanında (veya başka bir topolojide) sağlanır. Varsayılan depolama sınıfları sınıfını kullanır volumeBindingMode: WaitForFirstConsumer
.
adlı sc-azuredisk-csi-waitforfirstconsumer.yaml
bir dosya oluşturun ve aşağıdaki bildirimi yapıştırın. Depolama sınıfı, depolama sınıfımızla managed-csi
aynıdır ancak farklı volumeBindingMode
bir sınıfa sahip olur.
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: azuredisk-csi-waitforfirstconsumer
provisioner: disk.csi.azure.com
parameters:
skuname: StandardSSD_LRS
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
kubectl apply komutunu çalıştırarak depolama sınıfını oluşturun ve dosyanızı sc-azuredisk-csi-waitforfirstconsumer.yaml
belirtin:
kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
Birim anlık görüntüleri
Azure Disk CSI sürücüsü, kalıcı birimlerin anlık görüntülerinin oluşturulmasını destekler. Bu özelliğin bir parçası olarak, sürücü parametresinde incremental
ayarlanan değere bağlı olarak tam veya artımlı anlık görüntüler gerçekleştirebilir (varsayılan olarak doğrudur).
Aşağıdaki tabloda tüm parametreler için ayrıntılar sağlanır.
Veri Akışı Adı | Anlamı | Kullanılabilir Değer | Zorunlu | Default value |
---|---|---|---|---|
resourceGroup | Anlık görüntü görüntülerini depolamak için kaynak grubu | VAR OLAN KAYNAK GRUBU | Hayır | Belirtilmezse, anlık görüntü kaynak Azure Diskleriyle aynı kaynak grubunda depolanır |
Artımlı | Tam veya artımlı anlık görüntü alma | true , false |
Hayır | true |
tags | Azure Diskleri etiketleri | Etiket biçimi: 'key1=val1,key2=val2' | Hayır | "" |
userAgent | Müşteri kullanımı ilişkilendirmesi için kullanılan kullanıcı aracısı | Hayır | Oluşturulan Useragent biçimlendirilmiş driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID | Azure Disklerinin oluşturulacağı Azure abonelik kimliğini belirtin | Azure abonelik kimliği | Hayır | Boş değilse sağlanmalıdır resourceGroup , incremental olarak ayarlanmalıdır false |
Birim anlık görüntüsü oluşturma
Not
Devam etmeden önce uygulamanın kaynak diske veri yazmadığından emin olun.
Bu özelliğin bir örneği için kubectl apply komutuyla bir birim anlık görüntü sınıfı oluşturun:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/storageclass-azuredisk-snapshot.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc created
Şimdi bu öğreticininpvc-azuredisk
başında dinamik olarak oluşturduğumuz PVC'den bir birim anlık görüntüsü oluşturalım.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
Anlık görüntünün doğru oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın:
kubectl describe volumesnapshot azuredisk-volume-snapshot
Komutun çıkışı aşağıdaki örneğe benzer:
Name: azuredisk-volume-snapshot
Namespace: default
Labels: <none>
Annotations: API Version: snapshot.storage.k8s.io/v1
Kind: VolumeSnapshot
Metadata:
Creation Timestamp: 2020-08-27T05:27:58Z
Finalizers:
snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection
snapshot.storage.kubernetes.io/volumesnapshot-bound-protection
Generation: 1
Resource Version: 714582
Self Link: /apis/snapshot.storage.k8s.io/v1/namespaces/default/volumesnapshots/azuredisk-volume-snapshot
UID: dd953ab5-6c24-42d4-ad4a-f33180e0ef87
Spec:
Source:
Persistent Volume Claim Name: pvc-azuredisk
Volume Snapshot Class Name: csi-azuredisk-vsc
Status:
Bound Volume Snapshot Content Name: snapcontent-dd953ab5-6c24-42d4-ad4a-f33180e0ef87
Creation Time: 2020-08-31T05:27:59Z
Ready To Use: true
Restore Size: 10Gi
Events: <none>
Birim anlık görüntüsünü temel alan yeni bir PVC oluşturma
Birim anlık görüntüsünü temel alan yeni bir PVC oluşturabilirsiniz. Önceki adımda oluşturulan anlık görüntüyü kullanın ve kullanmak için yeni bir PVC ve yeni bir pod oluşturun.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/pvc-azuredisk-snapshot-restored.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/nginx-pod-restored-snapshot.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
pod/nginx-restored created
Son olarak, aşağıdaki komutu çalıştırarak içeriği denetleyerek daha önce oluşturulan PVC ile aynı olduğundan emin olalım:
kubectl exec nginx-restored -- ls /mnt/azuredisk
Komutun çıkışı aşağıdaki örneğe benzer:
lost+found
outfile
test.txt
Beklendiği gibi, daha önce oluşturulmuş test.txt
dosyamızı görmeye devam edebiliriz.
Birimleri kopyalama
Kopyalanan birim, mevcut kubernetes biriminin bir kopyası olarak tanımlanır. Kubernetes'te birimleri kopyalama hakkında daha fazla bilgi için birim kopyalamaya yönelik kavramsal belgelere bakın.
Azure Diskler için CSI sürücüsü birim kopyalamayı destekler. Göstermek için, daha önce oluşturulan azuredisk-pvc
kopyalanmış bir birim ve bunu kullanmak için yeni bir pod oluşturun.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/pvc-azuredisk-cloning.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/nginx-pod-restored-cloning.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azuredisk-cloning created
pod/nginx-restored-cloning created
Kopyalanan birimin içeriğini doğrulamak için aşağıdaki komutu çalıştırabilir ve dosyanın test.txt
oluşturulduğunu onaylayabilirsiniz:
kubectl exec nginx-restored-cloning -- ls /mnt/azuredisk
Komutun çıkışı aşağıdaki örneğe benzer:
lost+found
outfile
test.txt
Kalıcı birimi kapalı kalma süresi olmadan yeniden boyutlandırma
Bir PVC için daha büyük bir hacim isteyebilirsiniz. PVC nesnesini düzenleyin ve daha büyük bir boyut belirtin. Bu değişiklik, PV'yi destekleyen temel birimin genişlemesini tetikler.
Not
Talebi karşılamak için hiçbir zaman yeni bir BD oluşturulmaz. Bunun yerine, mevcut bir birim yeniden boyutlandırılır.
AKS'de managed-csi
yerleşik depolama sınıfı zaten genişletmeyi destekler, bu nedenle bu depolama sınıfıyla daha önce oluşturulan PVC'yi kullanın. PVC, 10 Gi kalıcı bir birim istedi. Aşağıdaki komutu çalıştırarak onaylayabilirsiniz:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
Komutun çıkışı aşağıdaki örneğe benzer:
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 9.8G 42M 9.8G 1% /mnt/azuredisk
Aşağıdaki komutu çalıştıran alanı artırarak spec.resources.requests.storage
PVC'yi genişletin:
kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'
Not
Kalıcı birimlerin küçültülmesi şu anda desteklenmemektedir. Geçerli boyuttan daha küçük boyutlu mevcut bir PVC'ye düzeltme eki uygulama denemesi aşağıdaki hata iletisine yol açar: The persistentVolumeClaim "pvc-azuredisk" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value.
Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azuredisk patched
Birim boyutunun arttığını onaylamak için aşağıdaki komutu çalıştırın:
kubectl get pv
Komutun çıkışı aşağıdaki örneğe benzer:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-391ea1a6-0191-4022-b915-c8dc4216174a 15Gi RWO Delete Bound default/pvc-azuredisk managed-csi 2d2h
(...)
Birkaç dakika sonra, PVC'nin boyutunu onaylamak için aşağıdaki komutları çalıştırın:
kubectl get pvc pvc-azuredisk
Komutun çıkışı aşağıdaki örneğe benzer:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-azuredisk Bound pvc-391ea1a6-0191-4022-b915-c8dc4216174a 15Gi RWO managed-csi 2d2h
Podun içindeki diskin boyutunu onaylamak için aşağıdaki komutu çalıştırın:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
Komutun çıkışı aşağıdaki örneğe benzer:
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 15G 46M 15G 1% /mnt/azuredisk
İsteğe bağlı ani artış
İsteğe bağlı disk seri çekim modeli, ihtiyaçları geçerli kapasitesini aştığında disk serilerinin yapılmasını sağlar. Bu model, disk her patladığında ek ücret oluşturur. İsteğe bağlı ani artış yalnızca 512 GiB'den büyük premium SSD'ler için kullanılabilir. Disk başına sağlanan premium SSD'ler ve aktarım hızı hakkında daha fazla bilgi için bkz . Premium SSD boyutu. Alternatif olarak, kredi tabanlı ani artış, diskin yalnızca kredi demetinde birikmiş olan ani krediler olduğunda patladığı yerdir. Kredi tabanlı seri artış, disk patladığında ek ücret oluşturmaz. Kredi tabanlı seri artış yalnızca premium SSD'ler 512 GiB ve daha küçük, standart SSD'ler 1024 GiB ve daha küçük sürümlerde kullanılabilir. İsteğe bağlı artış hakkında daha fazla bilgi için bkz . İsteğe bağlı ani artış.
Önemli
Varsayılan managed-csi-premium
depolama sınıfında isteğe bağlı seri artış devre dışıdır ve kredi tabanlı seri artış kullanılır. Varsayılan managed-csi-premium
depolama sınıfını temel alan kalıcı bir birim talebi tarafından dinamik olarak oluşturulan tüm premium SSD'ler de isteğe bağlı ani artış devre dışı bırakılır.
İsteğe bağlı ani artış etkin bir premium SSD kalıcı birimi oluşturmak için, aşağıdaki YAML şablonunda gösterildiği gibi enableBursting parametresi olarak ayarlanmış true
yeni bir depolama sınıfı oluşturabilirsiniz. İsteğe bağlı veri artışlarını etkinleştirme hakkında daha fazla bilgi için bkz . İsteğe bağlı ani artış. İsteğe bağlı ani artış etkinken kendi depolama sınıfınızı oluşturma hakkında daha fazla bilgi için bkz. Hızla Artırılabilir Yönetilen CSI Premium Depolama Sınıfı Oluşturma.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: burstable-managed-csi-premium
provisioner: disk.csi.azure.com
parameters:
skuname: Premium_LRS
enableBursting: "true"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Windows kapsayıcıları
Azure Disk CSI sürücüsü, Windows düğümlerini ve kapsayıcılarını destekler. Windows kapsayıcılarını kullanmak istiyorsanız Windows düğüm havuzu eklemek için Windows kapsayıcıları hızlı başlangıcını izleyin.
Bir Windows düğüm havuzunuz olduktan sonra, artık gibi managed-csi
yerleşik depolama sınıflarını kullanabilirsiniz. Aşağıdaki kubectl apply komutunu çalıştırarak zaman damgalarını dosyaya data.txt
kaydeden örnek bir Windows tabanlı durum bilgisi olan küme dağıtabilirsiniz:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
statefulset.apps/busybox-azuredisk created
Birimin içeriğini doğrulamak için aşağıdaki komutu çalıştırın:
kubectl exec -it busybox-azuredisk-0 -- cat c:\\mnt\\azuredisk\\data.txt # on Linux/MacOS Bash
kubectl exec -it busybox-azuredisk-0 -- cat c:\mnt\azuredisk\data.txt # on Windows Powershell/CMD
Komutun çıkışı aşağıdaki örneğe benzer:
2020-08-27 08:13:41Z
2020-08-27 08:13:42Z
2020-08-27 08:13:44Z
(...)
Sonraki adımlar
- Azure Dosyalar için CSI sürücüsünü kullanmayı öğrenmek için bkz. CSI sürücüsüyle Azure Dosyalar kullanma.
- Azure Blob depolama için CSI sürücüsünü kullanmayı öğrenmek için bkz . CSI sürücüsüyle Azure Blob depolamayı kullanma.
- Depolamanın en iyi yöntemleri hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te depolama ve yedekleme için en iyi yöntemler.
- Disk tabanlı depolama çözümleri hakkında daha fazla bilgi için bkz . AKS'de disk tabanlı çözümler.
Azure Kubernetes Service