Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Blob depolama Kapsayıcı Depolama Arabirimi (CSI) sürücüsü, Azure Blob depolama 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 konteynerleştirilmiş iş yüklerine rastgele blok ve dosya depolama sistemlerini sunan bir standarttır.
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.
Azure Blob depolamayı bir kapsayıcıya veya poda dosya sistemi olarak bağladığınızda, blob depolamayı çok büyük miktarlarda yapılandırılmamış veri çalıştıran birçok uygulamayla kullanmanıza olanak tanır. Örneğin:
- Günlük dosyası verileri
- Görüntüler, belgeler ve video veya ses akışı
- Olağanüstü durum kurtarma verileri
Uygulamalar, BlobFuse veya Ağ Dosya Sistemi (NFS) 3.0 protokollerini kullanarak Azure Blob depolamada depolanan verilere erişiyor. Azure Blob depolama CSI sürücüsünün kullanıma sunulmasından önce tek seçenek, AKS üzerinde çalışan uygulamanızdan Blob depolamaya erişmek için desteklenmeyen bir sürücüyü el ile yüklemekti. AKS'de Azure Blob depolama CSI sürücüsü etkinleştirildiğinde iki yerleşik depolama sınıfı vardır:
- azureblob-fuse-premium
- azureblob-nfs-premium
AKS kümesini CSI sürücüleri desteği ile oluşturmak için AKS'te CSI sürücüleri konusuna bakın. NFS protokolünün kullanıldığı Azure depolama türlerinin her biri arasındaki erişim farklılıkları hakkında daha fazla bilgi edinmek için bkz. NFS ile Azure Dosyalar, Blob Depolama ve Azure NetApp Files erişimini karşılaştırma.
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 konteynerleştirilmiş iş yüklerine rastgele blok ve dosya depolama sistemlerini sunan bir standarttır. 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.
Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için depolama seçenekleri.
Uyarı
Ağaç içi sürücüler , çekirdek Kubernetes kodunun parçası olan geçerli depolama sürücülerine ve eklentiler olan yeni CSI sürücülerine karşılık gelir.
Azure Dosyalar Kapsayıcı Depolama Arabirimi (CSI) sürücüsü, Azure Kubernetes Service (AKS) tarafından Azure dosya paylaşımlarının yaşam döngüsünü yönetmek için kullanılan CSI belirtimi uyumlu bir sürücüdür. CSI, Kubernetes'te konteynerleştirilmiş iş yüklerine rastgele blok ve dosya depolama sistemlerini sunan bir standarttır.
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üleri desteğine sahip bir AKS kümesi oluşturmak için bkz. AKS'de CSI sürücülerini etkinleştirme.
Uyarı
Ağaç içi sürücüler , çekirdek Kubernetes kodunun parçası olan geçerli depolama sürücülerine ve eklentiler olan yeni CSI sürücülerine karşılık gelir.
Azure CSI sürücü özellikleri
Azure Blob depolama CSI sürücüsü aşağıdaki özellikleri destekler:
- BlobFuse
- NFS 3.0 protokolü
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_LRSyalnızca önbelleğe alma modunu desteklerNone
-
Alanlar arası yedekli depolama (ZRS) disk desteği
-
Premium_ZRS,StandardSSD_ZRSdisk türleri desteklenir. ZRS diski, disk biriminin belirli bir düğümle aynı bölgede olması kısıtlaması olmaksızın bölge veya bölge dışı bir 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.
-
Disk kalıcı birimini kapalı kalma süresi olmadan yeniden boyutlandırma
Uyarı
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ı.
Önkoşullar
Azure CLI sürüm 2.42 veya üzeri yüklü ve yapılandırılmış olmalıdır. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme. Azure CLIaks-previewuzantısını yüklediyseniz, öğesini çağırarakaz extension update --name aks-previewuzantıyı en son sürüme güncelleştirdiğinizden emin olun.Kümenizden Azure Blob depolamaya erişmek için CSI Blob Depolama açık kaynak sürücüsünü daha önce yüklediyseniz açık kaynak sürücüyü temizlemek için aşağıdaki adımları gerçekleştirin.
AKS kümesi Denetim düzlemi kimliğiniz (AKS kümenizin adı) sanal ağ ve ağ güvenlik grubundaki Katkıda Bulunan rolüne eklenir.
BlobFuse bağlaması kullanırken bir Azure Data Lake Storage 2. Nesil hesabını (ADLS) desteklemek için aşağıdaki eylemleri gerçekleştirin:
- Dinamik sağlamada sürücüyü kullanarak bir ADLS hesabı oluşturmak için depolama sınıfı parametrelerinde belirtin
isHnsEnabled: "true". - Statik ayırma işlemi sırasında bir ADLS hesabına BlobFuse erişimini etkinleştirmek için kalıcı birimde montaj seçeneğini
--use-adls=trueolarak belirtin. - Hiyerarşik Ad Alanı ile bir depolama hesabını etkinleştirecekseniz, mevcut kalıcı birimler (PV)
--use-adls=truebağlama seçeneğiyle yeniden bağlanmalıdır.
- Dinamik sağlamada sürücüyü kullanarak bir ADLS hesabı oluşturmak için depolama sınıfı parametrelerinde belirtin
Varsayılan olarak BlobFuse önbelleği dizinde
/mntbulunur. Sanal makine (VM) SKU'su geçici bir disk sağlıyorsa,/mntdizin geçici diske bağlanır. VM SKU'su geçici bir disk sağlamazsa,/mntdizini işletim sistemi diskine bağlanır.--tmp-path=bağlama seçeneği, farklı bir önbellek dizini belirtmek için ayarlanabilir.
Uyarı
Açık kaynak sürücüsünün yüklenmesi sırasında blobfuse-proxy etkin değilse, açık kaynak sürücünün kaldırılması mevcut blobfuse bağlamalarını kesintiye uğratır. Ancak, NFS bağlamaları etkilenmez.
Azure Disk CSI sürücüsünün etkinleştirildiği bir AKS kümeniz olmalıdır. CSI sürücüsü, Kubernetes sürüm 1.21 veya üzerini çalıştıran AKS kümelerinde varsayılan olarak etkindir.
Azure CLI sürüm 2.37.0 veya üzeri yüklenir ve yapılandırılır. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.Komut
kubectlsatırı aracı yüklenir ve AKS kümenize bağlanacak şekilde yapılandırılır.Azure Disk CSI sürücüsünü (
disk.csi.azure.com) kullanacak şekilde yapılandırılmış bir depolama sınıfı.Azure Disk CSI sürücüsünün düğüm başına birim sınırı vardır. Birim sayısı, düğüm/düğüm havuzunun boyutuna göre değişir. Düğüm başına ayrılabilecek birim sayısını belirlemek için kubectl get komutunu çalıştırın:
kubectl get CSINode <nodename> -o yamlDüğüm başına birim sınırı iş yükünüz için bir sorunsa, CSI sürücüleri yerine kalıcı birimler için Azure Container Storage'ı kullanmayı göz önünde bulundurun.
Genel gereksinimler:
Azure Dosyalar CSI sürücüsünün etkinleştirildiği bir AKS kümeniz olmalıdır. Azure Dosyalar CSI sürücüsü, Kubernetes sürüm 1.21 veya üzerini çalıştıran AKS kümelerinde varsayılan olarak etkindir.
Azure CLI sürüm 2.37.0 veya üzeri yüklenir ve yapılandırılır. Sürümünüzü denetlemek için komutunu çalıştırın
az --version. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.Komut
kubectlsatırı aracı yüklenir ve AKS kümenize bağlanacak şekilde yapılandırılır.Azure Dosyalar CSI sürücüsünü (
file.csi.azure.com) kullanacak şekilde yapılandırılmış bir depolama sınıfı.Standart ve premium dosya paylaşımları arasında seçim yaparken, Azure Dosyalar üzerinde çalıştırmayı planladığınız beklenen kullanım deseninin sağlama modelini ve gereksinimlerini anlamanız önemlidir. Daha fazla bilgi için Kullanım desenlerine göre Azure Dosyalar performans katmanı seçme konusuna bakın.
Ağ Dosya Paylaşımı (NFS) gereksinimleri:
AKS kümesi Denetim düzlemi kimliğiniz (AKS küme adınız) VNet ve NetworkSecurityGroup'taKatkıda Bulunan rolüne eklenir.
AKS kümenizin hizmet sorumlusu veya yönetilen hizmet kimliği (MSI), depolama hesabına Katkıda Bulunan rolüne eklenmelidir.
Yönetilen Kimlik gereksinimleri:
Depolama hesabında kullanıcı tarafından atanan Kubelet kimliğine
Storage File Data SMB MI Adminrolünün verildiğine emin olun. Kendi depolama hesabınızı kullanıyorsanız, bu depolama hesabında kullanıcı tarafından atanan Kubelet kimliğine rol atamanızStorage File Data SMB MI Admingerekir.CSI sürücüsü depolama hesabını oluşturursa, rolü depolama hesabının bulunduğu kaynak grubuna verin
Storage File Data SMB MI Admin.Varsayılan yerleşik kullanıcı-atamalı Kubelet kimliğini kullanırsanız, yönetilen düğüm kaynak grubunda zaten gerekli
Storage File Data SMB MI Adminrole sahiptir.
Uyarı
Azure Dosya CSI sürücüsü yalnızca anahtar tabanlı (NTLM v2) kimlik doğrulaması kullanarak SMB dosya paylaşımlarının bağlanmasına izin verir ve bu nedenle Azure Dosya paylaşımı ayarlarının en yüksek güvenlik profilini desteklemez. Öte yandan, NFS dosya paylaşımlarını bağlamak için anahtar tabanlı kimlik doğrulaması gerekmez.
Yeni veya mevcut aks kümesinde CSI sürücüsünü etkinleştirme
Azure CLI kullanarak, kümedeki podlar tarafından kullanılmak üzere kalıcı bir birim yapılandırmadan önce yeni veya mevcut bir AKS kümesinde Blob depolama CSI sürücüsünü etkinleştirebilirsiniz.
Sürücüyü yeni bir kümede etkinleştirmek için aşağıdaki örnekte gösterildiği gibi parametresini
--enable-blob-driverkomutuna ekleyinaz aks create:az aks create \ --enable-blob-driver \ --name myAKSCluster \ --resource-group myResourceGroup \ --generate-ssh-keysSürücüyü mevcut bir kümede etkinleştirmek için aşağıdaki örnekte gösterildiği gibi parametresini
--enable-blob-driverkomutuna ekleyinaz aks update:az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Yüklü bir açık kaynak Blob CSI sürücüsü olmadığını onaylamanız istenir. Onayladıktan sonra bu eylemin tamamlanması birkaç dakika sürebilir. İşlem tamamlandıktan sonra çıkışta kümenizde sürücüyü etkinleştirme durumunu görmeniz gerekir. Aşağıdaki örnek, önceki komutun sonuçlarını gösteren bölüme benzer:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
...
}
Mevcut AKS kümesinde CSI sürücüsünü devre dışı bırakma
Azure CLI'yı kullanarak, kümeden kalıcı birimi kaldırdıktan sonra var olan bir AKS kümesinde Blob depolama CSI sürücüsünü devre dışı bırakabilirsiniz.
Var olan bir kümede sürücüyü devre dışı bırakmak için aşağıdaki örnekte gösterildiği gibi parametresini
--disable-blob-driverkomutuna ekleyinaz aks update:az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Depolama için kalıcı birim kullanma
Kubernetes, bir veya daha fazla poda depolama kaynağı olarak kalıcı hacim (PV) atar. PV'leri Kubernetes aracılığıyla dinamik olarak veya bir yönetici olarak statik şekilde sağlayabilirsiniz.
Aynı depolama birimine birden çok pod için eşzamanlı erişim gerekiyorsa, NFS veya BlobFuse kullanarak bağlanmak için Azure Blob depolamayı kullanabilirsiniz. Bu makalede, AKS kümesinde birden çok pod tarafından kullanılmak üzere dinamik olarak bir Azure Blob depolama kapsayıcısı oluşturma adımları gösterilmektedir.
Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için depolama seçenekleri.
Bu makalede, AKS kümesindeki tek bir pod tarafından kullanılmak üzere Azure diskli bir PV'nin nasıl dinamik olarak oluşturulacağı gösterilmektedir.
Birden çok pod aynı depolama birimine eş zamanlı erişime ihtiyaç duyuyorsa, Sunucu İleti Bloğu (SMB) veya Ağ Dosya Sistemi (NFS) kullanarak bağlanmak için Azure Dosyalar'ı kullanabilirsiniz. Bu makalede, AKS kümesindeki birden çok pod tarafından kullanılmak üzere dinamik olarak bir Azure Dosyalar paylaşımının nasıl oluşturulacağı gösterilmektedir.
Dinamik olarak sağlanan birim: Kubernetes'in depolama kaynaklarını otomatik olarak oluşturmasını ve yönetmesini istiyorsanız bu yaklaşımı kullanın. İsteğe bağlı ölçeklendirmeye ihtiyacınız olan, kod olarak altyapıyı tercih ettiğiniz ve el ile yapılandırma adımlarını en aza indirmek istediğiniz senaryolar için idealdir.
Statik olarak sağlanan birim: Kullanmak istediğiniz bir Azure Blob depolama hesabınız veya kapsayıcınız varsa bu yöntemi seçin. Depolama kurulumu, erişim ve yaşam döngüsü üzerinde daha fazla denetim sağlar ve mevcut kaynaklara bağlanmanız veya depolamayı birden çok kümede veya iş yükünde yeniden kullanmanız gerektiğinde uygundur.
Bu bölüm, bir iş yükü tarafından kullanılmak üzere Blob depolama ayrıntılarını içeren bir veya daha fazla kalıcı birim sağlamak isteyen küme yöneticileri için rehberlik sağlar. Kalıcı birim talebi (PVC), bir Azure Blob depolama kapsayıcısını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır.
Sağlanan depolama sınıfıyla Azure Blob depolama kullanarak kalıcı birim sağlamak için şu adımları izleyin:
StorageClassAşağıdaki YAML'yi adlıblob-fuse-sc.yamlbir dosyaya kaydederek bildirimi oluşturun:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-fuse provisioner: blob.csi.azure.com parameters: skuName: Premium_LRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS protocol: fuse2 networkEndpointType: privateEndpoint reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - -o allow_other - --file-cache-timeout-in-seconds=120 - --use-attr-cache=true - --cancel-list-on-mount-seconds=10 # prevent billing charges on mounting - -o attr_timeout=120 - -o entry_timeout=120 - -o negative_timeout=120 - --log-level=LOG_WARNING # LOG_WARNING, LOG_INFO, LOG_DEBUG - --cache-size-mb=1000 # Default will be 80% of available memory, eviction will happen beyond specified value.Kümenizde depolama sınıfını oluşturmak için,
StorageClass'yi aşağıdaki komutu çalıştırarak uygulayın:kubectl apply -f blob-fuse-sc.yaml
Yerleşik depolama sınıfını kullanarak PVC oluşturma
Depolama sınıfı, Azure Blob depolama kapsayıcısını nasıl oluşturulduğunu tanımlamak için kullanılır. Azure Blob depolama kapsayıcısını tutmak üzere depolama sınıfıyla kullanılmak üzere düğüm kaynak grubunda otomatik olarak bir depolama hesabı oluşturulur. skuName için aşağıdaki Azure depolama yedekliliği SKU'larından birini seçin:
Uyarı
AKS kümesindeki düğüm kaynak grubu altındaki herhangi bir kaynağı değiştirmek desteklenmeyen bir eylemdir ve küme işlemi hatalarına neden olur. Daha fazla bilgi için bkz. AKS ile neden iki kaynak grubu oluşturulur?
- Standard_LRS: Standart yerel olarak yedekli depolama
- Premium_LRS: Premium yerel olarak yedekli depolama
- Standard_ZRS: Standart alanlar arası yedekli depolama
- Premium_ZRS: Premium alanlar arası yedekli depolama
- Standard_GRS: Standart coğrafi olarak yedekli depolama
- Standard_RAGRS: Standart okuma erişimli coğrafi olarak yedekli depolama
AKS'de depolama CSI sürücülerini kullandığınızda, Azure Blob CSI depolama sürücüsünü kullanan iki başka yerleşik bileşen daha bulunmaktadır.
Her iki depolama sınıfındaki geri kazanım ilkesi, ilgili PV silindiğinde temel alınan Azure Blob depolamanın silinmesini sağlar. Depolama sınıfları ayrıca parametre true olarak ayarlandığından kapsayıcıyı set allowVolumeExpansion varsayılan olarak genişletilebilir olacak şekilde yapılandırır.
Uyarı
Kalıcı birimlerin küçültülmesi desteklenmez.
Depolama sınıflarını görmek için kubectl get sc komutunu kullanın. Aşağıdaki örnekte AKS kümesinde azureblob-fuse-premium kullanılabilen ve azureblob-nfs-premium depolama sınıfları gösterilmektedir:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azureblob-fuse-premium blob.csi.azure.com Delete Immediate true 23h
azureblob-nfs-premium blob.csi.azure.com Delete Immediate true 23h
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 ayırmak için kullanılır. Yerleşik depolama sınıflarından birini veya özel bir depolama sınıfını kullanarak PVC oluşturabilirsiniz. Bu PVC, belirtilen SKU'nuz, boyutunuz ve protokolünüzü içeren bir Azure Blob depolama kapsayıcısı oluşturur. Pod tanımı oluşturduğunuzda, istenen depolama alanını talep etmek için PVC kullanılır.
PVC, bir Azure Blob depolama kapsayıcısını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır. Aşağıdaki YAML, yerleşik depolama sınıfını kullanarak ReadWriteMany erişimine sahip 5 GB PVC oluşturmak için kullanılabilir. Erişim modları hakkında daha fazla bilgi için Kubernetes kalıcı birim belgelerine bakın.
adlı
blob-nfs-pvc.yamlbir dosya oluşturun ve aşağıdaki YAML'yi kopyalayın:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-blob-storage spec: accessModes: - ReadWriteMany storageClassName: azureblob-nfs-premium resources: requests: storage: 5Gikubectl create komutuyla PVC oluşturun:
kubectl create -f blob-nfs-pvc.yaml
İşlem tamamlandıktan sonra Blob depolama kapsayıcısı oluşturulur. PVC'nin durumunu görüntülemek için kubectl get komutunu kullanabilirsiniz:
kubectl get pvc azure-blob-storage
Komutun çıkışı aşağıdaki örneğe benzer:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
azure-blob-storage Bound pvc-b88e36c5-c518-4d38-a5ee-337a7dda0a68 5Gi RWX azureblob-nfs-premium 92m
PVC'yi monte etme
Aşağıdaki YAML, PVC azure-blob-storage'yi /mnt/blob yolunda Azure Blob depolamayı bağlamak için kullanan bir pod oluşturur.
adlı
blob-nfs-pvbir dosya oluşturun ve aşağıdaki YAML'yi kopyalayın. talepAdı'nın önceki adımda oluşturulan PVC ile eşleştiğinden emin olun.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/blob" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-blob-storagekubectl apply komutuyla pod oluşturun:
kubectl apply -f blob-nfs-pv.yamlPod çalışır durumda olduğunda, adlı
test.txtyeni bir dosya oluşturmak için aşağıdaki komutu çalıştırın.kubectl exec mypod -- touch /mnt/blob/test.txtDiskin 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.txtemin olun:kubectl exec mypod -- ls /mnt/blobKomutun çıkışı aşağıdaki örneğe benzer:
test.txt
Azure Blob özel depolama sınıfı oluşturma
Varsayılan depolama sınıfları en yaygın senaryolara uygundur, ancak tümüne uygun değildir. Bazı durumlarda kendi depolama sınıfınızı kendi parametrelerinizle özelleştirmek isteyebilirsiniz. Bu bölümde, ilki NFS protokolunu, ikincisi BlobFuse kullanan iki örnek sağlarız.
Bu örnekte, aşağıdaki bildirim NFS protokolunu kullanarak bir Blob depolama kapsayıcısı bağlamayı yapılandırır. Bu özelliği tags parametresini eklemek için kullanın.
adlı
blob-nfs-sc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimi yapıştırın:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azureblob-nfs-premium provisioner: blob.csi.azure.com parameters: protocol: nfs tags: environment=Development volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - nconnect=4kubectl apply komutuyla depolama sınıfını oluşturun:
kubectl apply -f blob-nfs-sc.yamlKomutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/blob-nfs-premium created
NFS veya BlobFuse PV'yi Bağlama
Bu bölümde, NFS protokolunu veya BlobFuse'u kullanarak PV'yi bağlarsınız.
NFS v3 protokolunu kullanarak Blob depolamayı bağlamak, hesap anahtarı kullanılarak kimlik doğrulaması yapmaz. AKS kümenizin aracı düğümüyle aynı veya eşlenmiş sanal ağda bulunması gerekir. Depolama hesabınızdaki verilerin güvenliğini sağlamanın tek yolu sanal ağ ve diğer ağ güvenlik ayarlarını kullanmaktır. Depolama hesabınıza NFS erişimini ayarlama hakkında daha fazla bilgi için bkz. Ağ Dosya Sistemi (NFS) 3.0 protokolunu kullanarak Blob Depolamayı Bağlama.
Aşağıdaki örnekte, NFS protokolü kullanılarak blob depolama kapsayıcısının kalıcı birim olarak nasıl bağlanacağı gösterilmektedir.
adlı
pv-blob-nfs.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın.storageClassaltında,resourceGroup,storageAccountvecontainerNamegüncelleştirin.Uyarı
volumeHandleYAML'nizdeki değer, kümedeki her özdeş depolama blob kapsayıcısı için benzersiz bir volumeID olmalıdır.#ve/karakterleri iç kullanım için ayrılmıştır ve kullanılamaz.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: blob.csi.azure.com name: pv-blob spec: capacity: storage: 1Pi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain # If set as "Delete" container would be removed after pvc deletion storageClassName: azureblob-nfs-premium mountOptions: - nconnect=4 csi: driver: blob.csi.azure.com # make sure volumeid is unique for every identical storage blob container in the cluster # character `#` and `/` are reserved for internal use and cannot be used in volumehandle volumeHandle: account-name_container-name volumeAttributes: resourceGroup: resourceGroupName storageAccount: storageAccountName containerName: containerName protocol: nfsUyarı
Kubernetes APIkapasite özniteliği zorunlu olsa da, depolama hesabınızın kapasite sınırına ulaşana kadar esnek bir şekilde veri yazabileceğiniz için bu değer Azure Blob depolama CSI sürücüsü tarafından kullanılmaz. özniteliğinin
capacitydeğeri yalnızca PV'ler ve PVC'ler arasında boyut eşleştirmesi için kullanılır. Kurgusal bir yüksek değer kullanmanızı öneririz. Pod, kurgusal boyutu 5 Petabayt olan takılı bir birim görür.Daha önce oluşturulan YAML dosyasına başvuran kubectl create komutunu kullanarak kalıcı birimi oluşturmak için aşağıdaki komutu çalıştırın:
kubectl create -f pv-blob-nfs.yamlpvc-blob-nfs.yamlPersistentVolumeClaim ile bir dosya oluşturun. Örneğin:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-blob spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-blob storageClassName: azureblob-nfs-premiumDaha önce oluşturulan YAML dosyasına başvuran kubectl create komutunu kullanarak kalıcı birim talebi oluşturmak için aşağıdaki komutu çalıştırın:
kubectl create -f pvc-blob-nfs.yaml
Pod oluşturma
Aşağıdaki YAML, daha önce oluşturulan pvc-blob adlı PV veya PVC'yi kullanarak Azure Blob depolamayı /mnt/blob yoluna bağlamak için bir pod oluşturur.
adlı
nginx-pod-blob.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. NFS veya BlobFuse için bir PV oluştururken claimName değerinin önceki adımda oluşturulan PVC ile eşleştiğinden emin olun.kind: Pod apiVersion: v1 metadata: name: nginx-blob spec: nodeSelector: "kubernetes.io/os": linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine name: nginx-blob volumeMounts: - name: blob01 mountPath: "/mnt/blob" readOnly: false volumes: - name: blob01 persistentVolumeClaim: claimName: pvc-blobKubectl create komutunu kullanarak pod oluşturmak ve PVC'yi bağlamak için aşağıdaki komutu çalıştırın:
kubectl create -f nginx-pod-blob.yamlPod ile etkileşimli bir kabuk oturumu oluşturarak Blob depolamanın bağlanıp bağlanmadığını doğrulamak için aşağıdaki komutu çalıştırın:
kubectl exec -it nginx-blob -- df -hKomutun çıkışı aşağıdaki örneğe benzer:
Filesystem Size Used Avail Use% Mounted on ... blobfuse 14G 41M 13G 1% /mnt/blob ...
StatefulSet oluştur
İş yükünüzün pod yeniden başlatmaları veya değiştirmeleri arasında depolama hacmini koruduğundan emin olmak için StatefulSet kullanın. StatefulSets, kalıcı depolamayı podlarla ilişkilendirme işlemini basitleştirerek başarısız olanları değiştirmek için oluşturulan yeni podların aynı depolama birimlerine otomatik olarak erişmesini sağlar. Aşağıdaki örneklerde BlobFuse veya NFS protokolü kullanılarak Blob depolama için StatefulSet'in nasıl ayarlanacağı gösterilmektedir.
adlı
azure-blob-nfs-ss.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın.apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-blob-nfs labels: app: nginx spec: serviceName: statefulset-blob-nfs replicas: 1 template: metadata: labels: app: nginx spec: nodeSelector: "kubernetes.io/os": linux containers: - name: statefulset-blob-nfs image: mcr.microsoft.com/azurelinux/base/nginx:1.25 volumeMounts: - name: persistent-storage mountPath: /mnt/blob updateStrategy: type: RollingUpdate selector: matchLabels: app: nginx volumeClaimTemplates: - metadata: name: persistent-storage spec: storageClassName: azureblob-nfs-premium accessModes: ["ReadWriteMany"] resources: requests: storage: 100Gikubectl createkomutunu kullanarak StatefulSet'i oluşturun.kubectl create -f azure-blob-nfs-ss.yaml
Dinamik PVC depolama sınıfı parametreleri
Aşağıdaki tablo, dinamik PVC'niz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreleri içerir.
| İsim | Description | Example | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| skuName | Bir Azure depolama hesabı türü belirtin (diğer ad: storageAccountType). |
Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS |
Hayı | Standard_LRS |
| location | Bir Azure konumu belirtin. | eastus |
Hayı | Boşsa, sürücü geçerli kümeyle aynı konum adını kullanır. |
| resourceGroup | Bir Azure kaynak grubu adı belirtin. | myResourceGroup | Hayı | Boşsa, sürücü geçerli kümeyle aynı kaynak grubu adını kullanır. |
| storageAccount | Bir Azure depolama hesabı adı belirtin. | storageAccountName | Hayı | Belirli bir depolama hesabı adı sağlanmadığında, sürücü aynı kaynak grubundaki hesap ayarlarıyla eşleşen uygun bir depolama hesabı arar. Eşleşen bir depolama hesabı bulamazsa yeni bir depolama hesabı oluşturur. Ancak, bir depolama hesabı adı belirtilirse, depolama hesabının zaten mevcut olması gerekir. |
| networkEndpointType 1 | Sürücü tarafından oluşturulan depolama hesabı için ağ uç noktası türünü belirtin. privateEndpoint belirtilirse, depolama hesabı için bir özel uç nokta oluşturulur. Diğer durumlarda, NFS protokolü için bir hizmet uç noktası oluşturulur. | privateEndpoint |
Hayı | AKS kümesi için, AKS kümesinin adını sanal ağı barındıran kaynak grubundaki Katkıda Bulunan rolüne ekleyin. |
| protocol | BlobFuse bağlantı noktasını veya NFSv3 bağlantı noktasını belirtin. |
fuse, nfs |
Hayı | fuse |
| containerName | Varolan kapsayıcı (dizin) adını belirtin. | container | Hayı | Eğer boşsa, sürücü BlobFuse için pvc-fuse ile veya NFS v3 için pvc-nfs ile başlayan yeni bir kapsayıcı adı oluşturur. |
| konteynerAdÖneki | Sürücü tarafından oluşturulan Azure depolama dizini ön eklerini belirtin. | benim | Hayı | Yalnızca küçük harf, sayı, kısa çizgi içerebilir ve uzunluk 21 karakterden az olmalıdır. |
| server | Azure depolama hesabının etki alanı adını belirtin. | Mevcut depolama hesabı DNS etki alanı adı, örneğin <storage-account>.blob.core.windows.net. |
Hayı | Sürücü boşsa varsayılan <storage-account>.blob.core.windows.net veya diğer bağımsız bulut depolama hesabı DNS etki alanı adını kullanır. |
| allowBlobPublicAccess | Sürücü tarafından oluşturulan depolama hesabı için tüm bloblara veya kapsayıcılara genel erişim izni verme veya erişimi reddetme. |
true,false |
Hayı | false |
| storageEndpointSuffix | Azure depolama uç noktası son ekini belirtin. | core.windows.net |
Hayı | Sürücü boşsa, bulut ortamına göre varsayılan depolama uç noktası sonekini kullanır. |
| tags | [Etiketler][az-tags] yeni depolama hesabında oluşturulur. | Etiket biçimi: 'foo=aaa,bar=bbb' | Hayı | "" |
| matchTags | Sürücü uygun bir depolama hesabı bulmaya çalıştığında etiketleri eşleştirin. |
true,false |
Hayı | false |
1 Depolama hesabı sürücü tarafından oluşturulduysa, yalnızca depolama sınıfında parametre belirtmeniz networkEndpointType: privateEndpoint gerekir. CSI sürücüsü, özel uç noktayı ve özel DNS bölgesini (adlı privatelink.blob.core.windows.net) hesapla birlikte oluşturur. Kendi depolama hesabınızı getirirseniz depolama hesabı için özel uç nokta oluşturmanız gerekir. Azure Blob depolamayı ağdan yalıtılmış bir kümede kullanıyorsanız ile networkEndpointType: privateEndpointözel bir depolama sınıfı oluşturmanız gerekir.
Statik PV sağlama parametreleri
Aşağıdaki tablo, statik PV'nizi tanımlamak için kullanabileceğiniz parametreleri içerir.
| İsim | Description | Example | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| volumeHandle | Sürücünün kümedeki depolama blob kapsayıcısını benzersiz olarak tanımlamak için kullanabileceği bir değer belirtin. | Benzersiz bir değer oluşturmanın önerilen bir yolu, genel olarak benzersiz depolama hesabı adıyla kapsayıcı adını birleştirmektir: {account-name}_{container-name}. # ve / karakterleri iç kullanım için ayrılmıştır ve birim tutamacında kullanılamaz. |
Yes | |
| volumeAttributes.resourceGroup | Azure kaynak grubu adını belirtin. | myResourceGroup | Hayı | Sürücü boşsa geçerli kümeyle aynı kaynak grubu adını kullanır. |
| volumeAttributes.storageAccount | Mevcut bir Azure depolama hesabı adı belirtin. | storageAccountName | Yes | |
| volumeAttributes.containerName | Mevcut kapsayıcı adını belirtin. | container | Yes | |
| volumeAttributes.protocol | BlobFuse veya NFS v3 bağlamasını belirtin. |
fuse, nfs |
Hayı | fuse |
Yerleşik depolama sınıflarını kullanarak Azure Disk VM'leri oluşturma
Depolama sınıfı, bir depolama biriminin pv ile 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: Yerel olarak yedekli depolama (LRS) ile Azure Standart SSD kullanarak yönetilen diskler oluşturur. Aks kümeleri için Kubernetes sürüm 1.29 birden çok kullanılabilirlik alanına dağıtıldığında, bu depolama sınıfı yönetilen diskleri sağlamak için Azure Standart SSD alanlar arası yedekli depolama (ZRS) kullanır.managed-csi-premium: Azure Premium LRS kullanarak yönetilen diskler sağlar. Kubernetes sürüm 1.29'undan başlayarak, birden çok kullanılabilirlik alanına yayılan AKS kümeleri için bu depolama sınıfı yönetilen diskler oluşturmak için otomatik olarak Azure Premium ZRS kullanır.
Kubernetes sürüm 1.29'dan başlayarak, Azure Kubernetes Service (AKS) kümelerini birden çok kullanılabilirlik alanına dağıttığınızda AKS artık yerleşik depolama sınıflarında yönetilen diskler oluşturmak için alanlar arası yedekli depolama (ZRS) kullanıyor.
ZRS, seçtiğiniz bölgedeki birden çok Azure kullanılabilirlik alanı arasında Azure yönetilen disklerinizin eşzamanlı replikasyonunu sağlar. Bu yedeklilik stratejisi, uygulamalarınızın dayanıklılığını artırır ve verilerinizi veri merkezi hatalarına karşı korur.
Ancak, alanlar arası yedekli depolamanın (ZRS) yerel olarak yedekli depolamaya (LRS) kıyasla daha yüksek bir maliyetle geldiğini unutmayın. Maliyet iyileştirme öncelikliyse, LRS SKU adı parametresiyle yeni bir depolama sınıfı oluşturabilir ve bunu kalıcı birim talebinizde kullanabilirsiniz.
Veri kaybı riski nedeniyle PVC'nin boyutunu küçültme desteklenmez. komutunu kullanarak mevcut bir depolama sınıfını kubectl edit sc düzenleyebilir veya kendi özel depolama sınıfınızı oluşturabilirsiniz. Örneğin, 4 TiB boyutunda bir disk kullanmak istiyorsanız, [disk önbelleği 4 TiB ve daha büyük diskler için desteklenmediğinden][disk-host-cache-setting] tanımlayan cachingmode: None bir depolama sınıfı oluşturmanız gerekir. Depolama sınıfları ve kendi depolama sınıfınızı oluşturma hakkında daha fazla bilgi için bkz . AKS'deki uygulamalar için depolama seçenekleri.
Her iki depolama sınıfının geri alma ilkesi, ilgili PV silindiğinde altta yatan Azure Disklerinin silinmesini sağlar. Depolama sınıfları ayrıca PV'leri genişletilebilir olacak şekilde yapılandırabilir. Pvc'yi yeni boyutla düzenlemeniz yeterlidir.
Bu depolama sınıflarını kullanmak için, bu sınıflara referans veren ve kullanan ilgili bir PVC ve 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 depolama alanını talep etmek için PVC kullanılır.
Uyarı
Kalıcı birim talepleri GiB cinsinden belirtildiği halde, Azure'da yönetilen diskler belirli bir boyut için SKU'ya göre faturalandırılır. Bu SKU'lar S4 veya P4 diskleri için 32GiB ile S80 veya P80 diskler için 32TiB arasında değişir (önizlemede). Premium yönetilen diskin aktarım hızı ve IOPS performansı hem SKU'ya hem de AKS kümesindeki düğümlerin örnek boyutuna bağlıdır. Daha fazla bilgi için bkz . Yönetilen disklerin fiyatlandırması ve performansı.
komutunu kullanarak önceden oluşturulmuş depolama sınıflarını kubectl get sc görebilirsiniz. Aşağıdaki örnekte, AKS kümesinde kullanılabilen önceden oluşturulmuş depolama sınıfları gösterilmektedir:
kubectl get sc
Komutun çıkışı aşağıdaki örneğe benzer:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
PVC, depolama sınıfına göre depolamayı otomatik olarak sağlar. Bu durumda PVC, standart veya premium Azure yönetilen diski oluşturmak için önceden oluşturulmuş depolama sınıflarından birini kullanabilir.
adlı
azure-pvc.yamlbir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Talep,azure-managed-diskerişimine sahip,5 GBboyutunda, adlıReadWriteOncebir disk talep eder. Managed-csi depolama sınıfı, depolama sınıfı olarak belirtilir.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5GiTavsiye
Premium depolama kullanan bir disk oluşturmak için managed-csi
storageClassName: managed-csi-premiumkullanın.komutunu kullanarak
kubectl applykalıcı birim talebi oluşturun ve azure-pvc.yaml dosyanızı belirtin.kubectl apply -f azure-pvc.yamlKomutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/azure-managed-disk created
Pod'a PVC uygulama
Kalıcı birim talebi oluşturduktan sonra, durumunun Pendingolduğunu doğrulamanız gerekir. Durum, pod tarafından kullanılmaya hazır olduğunu gösterir.
komutunu kullanarak
kubectl describe pvcPVC'nin durumunu doğrulayın.kubectl describe pvc azure-managed-diskKomutun çıktısı aşağıdaki sıkıştırılmış örneğe benzer:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]adlı
azure-pvc-disk.yamlbir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Bu bildirim, Azure Diskiniazure-managed-diskyolunda bağlamak için/mnt/azureadlı kalıcı birim talebini kullanan temel bir NGINX podu oluşturur. Windows Server kapsayıcıları için, 'D:' gibi, Windows yol kurallarını kullanarak birmountPathbelirtin.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-diskPod'u oluşturmak için
kubectl applykomutunu kullanın.kubectl apply -f azure-pvc-disk.yamlKomutun çıkışı aşağıdaki örneğe benzer:
pod/mypod createdArtık
/mnt/azuredizininde Azure Diski bağlı olan çalışan bir podunuz var. komutunu kullanarakkubectl describepod yapılandırmasını denetleyin.kubectl describe pod mypodKomutun çıkışı aşağıdaki örneğe benzer:
[...] 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" [...]
PVC'ler için dinamik depolama sınıfı parametreleri
Aşağıdaki tablo, PVC'leriniz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreleri içerir.
| İsim | Meaning | Kullanılabilir Değer | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| skuName | Azure Disks depolama hesabı türü (diğer ad: storageAccountType) |
Standard_LRS, Premium_LRS, StandardSSD_LRS, , PremiumV2_LRS, UltraSSD_LRS, Premium_ZRS, StandardSSD_ZRS |
Hayı | StandardSSD_LRS |
| fsType | Dosya Sistemi Türü |
ext4, ext3, ext2, xfs, , btrfs Linux için, ntfs Windows için |
Hayı |
ext4 Linux için, ntfs Windows için |
| cachingMode | [Azure Veri Diski Ana Bilgisayarı Önbellek Ayarı][disk-host-cache-setting] (PremiumV2_LRS ve UltraSSD_LRS yalnızca None önbelleğe alma modunu destekler) |
None, ReadOnly, ReadWrite |
Hayı | ReadOnly |
| resourceGroup | Azure Diskleri için kaynak grubunu belirtme | Mevcut kaynak grubu adı | Hayı | Sürücü boşsa geçerli AKS kümesiyle aynı kaynak grubu adını kullanır |
| DiskIOPSReadWrite | [UltraSSD disk][ultra-ssd-diskler] veya [Premium SSD v2][premiumv2_lrs_disks] IOPS Özelliği (en az: 2 IOPS/GiB) | 100~160000 | Hayı | 500 |
| DiskMBpsReadWrite | [UltraSSD disk][ultra-ssd-diskler] veya [Premium SSD v2][premiumv2_lrs_disks] Aktarım Hızı Özelliği (en az: 0,032/GiB) | 1~2000 | Hayı | 100 |
| MantıksalSektörBoyutu | Ultra disk için bayt cinsinden mantıksal kesim boyutu. Desteklenen değerler 512 ad 4096'dır. Varsayılan değer 4096'dır. |
512, 4096 |
Hayı | 4096 |
| tags | Azure Disk [tags][azure-tags] | Etiket biçimi: key1=val1,key2=val2 |
Hayı | "" |
| diskEncryptionSetID | [disk şifreleme] için kullanılacak, dinlenme hâlinde şifrelemeyi etkinleştirmek üzere disk şifreleme kümesinin ResourceId değeri | biçim: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
Hayı | "" |
| diskEncryptionType | Disk şifreleme kümesinin şifreleme türü. |
EncryptionAtRestWithCustomerKey (varsayılan olarak), EncryptionAtRestWithPlatformAndCustomerKeys |
Hayı | "" |
| yazmaHızlandırıcıEtkin | [Azure Disklerde Yazma Hızlandırıcısı][azure-disk-write-accelerator] |
true, false |
Hayı | "" |
| ağ erişim politikası | Disk veya anlık görüntü için SAS URI'sinin oluşturulmasını önlemek için NetworkAccessPolicy özelliği |
AllowAll, DenyAll, AllowPrivate |
Hayı | AllowAll |
| diskAccessID | Disklerde özel uç noktaları kullanmak için DiskAccess kaynağının Azure Kaynak Kimliği | Hayı | `` | |
| patlamayı etkinleştir | [İsteğe bağlı artırmayı etkinleştirme][isteğe bağlı artırma], diskin sağlanan performans hedefinin ötesine geçmesine olanak tanır. İsteğe bağlı seri artış yalnızca Premium diske ve disk boyutu > 512 GB olduğunda uygulanmalıdır. Ultra ve paylaşılan disk desteklenmez. Patlatma varsayılan olarak devre dışıdır. |
true, false |
Hayı | false |
| userAgent (kullanıcı aracı) | Kullanıcı aracısı, müşteri kullanımı atfı için kullanılmaktadır. | Hayı | Oluşturulan kullanıcı aracısı şu şekilde biçimlendirilir: driverName/driverVersion compiler/version (OS-ARCH) |
|
| subscriptionID | Azure Disklerinin oluşturulduğu Azure abonelik kimliğini belirtin. | Azure abonelik kimliği | Hayı | Boş değilse resourceGroup sağlanmalıdır. |
PV için statik sağlama parametreleri
Aşağıdaki tablo, PV tanımlamak için kullanabileceğiniz parametreleri içerir.
| İsim | Meaning | Kullanılabilir Değer | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| volumeHandle | Azure disk URI'si | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Yes | N/A |
| volumeAttributes.fsType | Dosya sistemi türü |
ext4, ext3, ext2, xfs, , btrfs Linux için, ntfs Windows için |
Hayı |
ext4 Linux için, ntfs Windows için |
| volumeAttributes.partition | Mevcut diskin bölüm numarası (yalnızca Linux'ta desteklenir) |
1, 2, 3 |
Hayı | Boş (bölüm yok) - Bölüm biçiminin -part1 gibi olduğundan emin olun. |
| volumeAttributes.cachingMode | [Disk host önbellek ayarı][disk-host-cache-setting] |
None, ReadOnly, ReadWrite |
Hayı | ReadOnly |
Azure Disk ö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.
Kalıcı birim talebi (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 volumeBindingMode: WaitForFirstConsumer kullanabilirsiniz. Bu yaklaşım, kalıcı hacmin (PV), pod'un zamanlama kısıtlamalarına göre gerektiği gibi aynı kullanılabilirlik bölgesinde veya topolojide tahsis edilmesini sağlar. Varsayılan depolama sınıfları sınıfını kullanır volumeBindingMode: WaitForFirstConsumer .
adlı
sc-azuredisk-csi-waitforfirstconsumer.yamlbir dosya oluşturun ve aşağıdaki bildirimi yapıştırın. Depolama sınıfı, depolama sınıfımızlamanaged-csiaynıdır ancak farklıvolumeBindingModebir sınıfa sahip olur. Örneğin: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: WaitForFirstConsumerkubectl apply komutunu çalıştırarak depolama sınıfını oluşturun ve dosyanızı
sc-azuredisk-csi-waitforfirstconsumer.yamlbelirtin:kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yamlKomutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
Birim anlık görüntüleri hakkında bilgi edinin
Azure Disk CSI sürücüsü birim anlık görüntülerini destekleyerek yedekleme ve geri yükleme işlemleri için belirli noktalarda kalıcı birimlerin durumunu yakalamanızı sağlar. Birim anlık görüntüleri, çalışan uygulamaları kesintiye uğratmadan kalıcı verilerinizin anlık kopyalarını oluşturmanızı sağlar. Yeni birimler oluşturmak veya mevcut birimleri önceki bir duruma geri yüklemek için bu anlık görüntüleri kullanabilirsiniz.
İki tür anlık görüntü oluşturabilirsiniz:
Tam anlık görüntüler: Diskin tam durumunu yakalayın.
Artımlı anlık görüntüler: Daha iyi depolama verimliliği ve maliyet tasarrufu sağlayarak yalnızca son anlık görüntüden bu yana yapılan değişiklikleri yakalayın. Artımlı anlık görüntüler,
incrementalparametresi VolumeSnapshotClass içindetrueolarak ayarlandığında varsayılan davranıştır.
Aşağıdaki tabloda bu parametrelerle ilgili ayrıntılar sağlanmaktadır.
| İsim | Meaning | Kullanılabilir Değer | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| resourceGroup | Anlık görüntü görüntülerini depolamak için kaynak grubu | VAR OLAN KAYNAK GRUBU | Hayı | Belirtilmezse, anlık görüntüler kaynak Azure Diskleriyle aynı kaynak grubunda depolanır |
| Artımlı | Tam veya artımlı anlık görüntü alma |
true, false |
Hayı | true |
| tags | Azure Diskleri etiketleri | Etiket biçimi: 'key1=val1,key2=val2' | Hayı | "" |
| kullanıcı temsilcisi | Müşteri kullanımı ilişkilendirmesi için kullanılan kullanıcı aracısı | Hayı | Oluşturulan Kullanıcı Aracısı biçimlendirilmiş driverName/driverVersion compiler/version (OS-ARCH) |
|
| subscriptionID | Azure Disklerinin oluşturulduğu Azure abonelik kimliğini belirtme | Azure abonelik kimliği | Hayı | Boş değilse, resourceGroup olarak sağlanmalıdır, incrementalfalse olarak ayarlanmalıdır. |
Birim anlık görüntüleri aşağıdaki senaryoları destekler:
- Yedekleme ve geri yükleme: Durum bilgisi olan uygulama verilerinin belirli bir noktaya yedeklerini oluşturun ve gerektiğinde geri yükleyin.
- Veri kopyalama: Aynı verilerle yeni kalıcı birimler oluşturmak için mevcut birimleri klonlar.
- Olağanüstü durum kurtarma: Veri kaybından veya bozulmasından hızlı bir şekilde kurtarın.
Birim anlık görüntüsü oluştur.
Uyarı
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.yamlKomutun çıkışı aşağıdaki örneğe benzer:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc createdBu makalenin önceki bölümlerinde oluşturulan PVC'den bir birim anlık görüntüsü oluşturun.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yamlKomutun çıkışı aşağıdaki örneğe benzer:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot createdAnlı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-snapshotKomutun çı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>
Hacim anlık görüntüsünü temel alarak yeni bir PVC oluşturun
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ü kullanarak yeni bir PVC ve yeni bir pod oluşturup tüketin.
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.yamlKomutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created pod/nginx-restored createdDaha önce oluşturulan PVC ile aynı olduğundan emin olmak için aşağıdaki komutu çalıştırarak içeriği denetleyin:
kubectl exec nginx-restored -- ls /mnt/azurediskKomutun çıkışı aşağıdaki örneğe benzer:
lost+found outfile test.txt
Daha önce oluşturulmuş test.txt dosyamızı yine de beklendiği gibi görebiliriz.
Birimleri kopyalama
Kopyalanan birim, mevcut kubernetes biriminin bir kopyası olarak tanımlanır. Kubernetes'te birimleri kopyalama hakkında daha fazla bilgi için bkz. birim kopyalama.
Önceden oluşturulmuş bir birimin
azuredisk-pvcve 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.yamlKomutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azuredisk-cloning created pod/nginx-restored-cloning createdKopyalanan birimin içeriğini doğrulamak için aşağıdaki komutu çalıştırabilir ve dosyanın
test.txtoluşturulduğunu onaylayabilirsiniz:kubectl exec nginx-restored-cloning -- ls /mnt/azurediskKomutun çıkışı aşağıdaki örneğe benzer:
lost+found outfile test.txt
Kesinti Süresi Olmadan Azure Disk PV'yi Yeniden Boyutlandırma
PVC için daha büyük bir birim 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.
Uyarı
Talebi karşılamak için asla yeni bir PV 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 daha önce oluşturulmuş olanı kullanın. PVC, 10 Gi kalıcı depolama alanı 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ırarak
spec.resources.requests.storagealanını artırın ve PVC'yi genişletin.kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'Uyarı
Küçültülen PV'ler şu anda desteklenmemektedir. Mevcut boyuttan daha küçük boyutlu bir PVC'yi yamaya çalışmak, aşağıdaki hata mesajına 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 patchedBirim boyutunun arttığını onaylamak için aşağıdaki komutu çalıştırın:
kubectl get pvKomutun çı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-azurediskKomutun çı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 2d2hPodun içindeki diskin boyutunu onaylamak için aşağıdaki komutu çalıştırın:
kubectl exec -it nginx-azuredisk -- df -h /mnt/azurediskKomutun çıkışı aşağıdaki örneğe benzer:
Filesystem Size Used Avail Use% Mounted on /dev/sdc 15G 46M 15G 1% /mnt/azuredisk
Podunuzun birden çok kapsayıcısı varsa, aşağıdaki komutu çalıştırarak hangi kapsayıcıyı belirtebilirsiniz:
kubectl exec -it nginx-azuredisk -c <ContainerName> -- df -h /mnt/azuredisk
Windows konteynerleri
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ıç kılavuzunu izleyin.
Bir Windows düğüm havuzunuz olduktan sonra, artık gibi
managed-csiyerleşik depolama sınıflarını kullanabilirsiniz. Aşağıdaki kubectl apply komutunu çalıştırarak, zaman damgalarınıdata.txtdosyasına kaydeden örnek bir Windows tabanlı durum bilgili seti dağıtabilirsiniz.kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yamlKomutun çıkışı aşağıdaki örneğe benzer:
statefulset.apps/busybox-azuredisk createdBirimin içeriğini doğrulamak için aşağıdaki komutu çalıştırın:
kubectl exec -it statefulset-azuredisk-win-0 -- powershell -c "type c:/mnt/azuredisk/data.txt"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 (...)
İsteğe bağlı ani artış
Talep üzerine disk patlama modeli, ihtiyaçları geçerli kapasitesini aştığında disk patlamalarına izin verir. Bu model, disk her patladığında ek ücret oluşturur. Yalnızca 512 GiB'den büyük premium SSD'ler için isteğe bağlı ani patlama kullanılabilir. Disk başına sağlanan premium SSD'ler, ayrılmış IOPS ve bant genişliği hakkında daha fazla bilgi için bkz. Premium SSD boyutu. Alternatif olarak, kredi tabanlı patlama, diskin kredi kovasında birikmiş patlama kredileri varsa gerçekleşir. Kredi tabanlı seri artış, disk patladığında ek ücret oluşturmaz. Kredi tabanlı seri artış yalnızca 512 GiB ve daha küçük premium SSD'ler ve 1.024 GiB ve daha küçük standart SSD'ler için 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şturulmuş olan tüm premium SSD'lerde, isteğe bağlı ani artış da devre dışı bırakılmıştır.
İsteğe bağlı patlama modu etkinleştirilmiş bir premium SSD kalıcı hacim oluşturmak için, aşağıdaki YAML şablonunda gösterildiği gibi enableBursting parametresi ayarlanmış yeni bir depolama sınıfı oluşturabilirsiniz. İsteğe bağlı ani artışları etkinleştirme hakkında daha fazla bilgi için bkz. İsteğe bağlı ani artış. İsteğe bağlı ani artış etkinleştirilmişken 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
Kaynakları temizle
Bu makalede oluşturulan kaynaklarla işiniz bittiğinde komutunu kullanarak kubectl delete bunları kaldırabilirsiniz.
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
Azure Dosyalar VM'leri sağlama
Azure Dosyalar, Azure Premium dosya paylaşımlarını destekler. En düşük dosya paylaşımı kapasitesi 100 GiB'dir. Premium dosya paylaşımları G/Ç yoğunluklu iş yükleri için daha yüksek performans ve düşük gecikme süreli disk desteği sunduğundan Standart dosya paylaşımları yerine Azure Premium dosya paylaşımları kullanmanızı öneririz. Azure Dosyalar paylaşımları ile düğüme kaç tane bağlanabileceğine ilişkin bir sınır yoktur. Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için depolama seçenekleri.
AKS'de depolama CSI sürücülerini kullandığınızda, Azure Dosyalar CSI depolama sürücülerini kullanan iki yerleşik StorageClasses daha bulunmaktadı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.
azurefile-csi: Bir Azure dosya paylaşımı oluşturmak için Azure Standart Depolama'yı kullanır.azurefile-csi-premium: Bir Azure dosya paylaşımı oluşturmak için Azure Premium Depolama'yı kullanır.
Her iki depolama sınıfındaki geri alma politikası, ilgili PV silindiğinde alttaki Azure dosya paylaşımının silinmesini sağlar. Depolama sınıfları da dosya paylaşımlarını genişletilebilir olacak şekilde yapılandırdığından, PVC'yi yeni boyutla düzenlemeniz yeterlidir.
Uyarı
Azure Dosyalar ile en iyi deneyimi elde etmek için bu en iyi yöntemleri izleyin. Bağlama seçeneklerinin (mountOptions) yapılandırılma konumu, dinamik veya statik kalıcı birimler sağlayıp sağlamadığınıza bağlıdır.
- Bir birimi depolama sınıfıyla dinamik olarak hazırlarsanız, depolama sınıfı nesnesinde bağlama seçeneklerini belirtin (tür:
StorageClass). - Bir birimi statik olarak oluşturuyorsanız PersistentVolume nesnesinde bağlama seçeneklerini belirtin (tür:
PersistentVolume). - Dosya paylaşımını satır içi birim olarak bağlıyorsanız Pod nesnesindeki bağlama seçeneklerini belirtin (tür:
Pod).
Karşılaştırma testlerini çalıştırırken FIO'yu öneririz. Daha fazla bilgi için bkz . Karşılaştırma araçları ve testleri.
Depolama sınıfı, Azure dosya paylaşımının nasıl oluşturulduğunu tanımlamak için kullanılır. Azure dosya paylaşımını tutmak üzere depolama sınıfıyla kullanılmak üzere düğüm kaynak grubunda otomatik olarak bir depolama hesabı oluşturulur. skuName için aşağıdaki Azure depolama yedekliliği SKU'larından birini seçin:
Uyarı
AKS kümesindeki düğüm kaynak grubu altındaki herhangi bir kaynağı değiştirmek desteklenmeyen bir eylemdir ve küme işlemi hatalarına neden olur. Daha fazla bilgi için bkz. AKS ile neden iki kaynak grubu oluşturulur?
- Standard_LRS: Standart yerel olarak yedekli depolama
- Standard_GRS: Standart coğrafi olarak yedekli depolama
- Standard_ZRS: Standart alanlar arası yedekli depolama
- Standard_RAGRS: Standart okuma erişimli coğrafi olarak yedekli depolama
- Standard_RAGZRS: Standart okuma erişimli coğrafi alanlar arası yedekli depolama
- Premium_LRS: Premium yerel olarak yedekli depolama
- Premium_ZRS: Premium alanlar arası yedekli depolama
Azure Dosyalar için Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz. Kubernetes Depolama Sınıfları.
Adlı
azure-file-sc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimde kopyalayın. hakkındamountOptionsdaha fazla bilgi için Bağlama seçenekleri bölümüne bakın.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: my-azurefile provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21 allowVolumeExpansion: true mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 - nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks parameters: skuName: Premium_LRSkomutunu kullanarak depolama sınıfını
kubectl applyoluşturun.kubectl apply -f azure-file-sc.yaml
PVC oluştur
PVC, bir Azure dosya paylaşımını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır. ReadWriteMany erişimiyle boyutu 100 GB olan bir PVC oluşturmak için aşağıdaki YAML'yi kullanabilirsiniz. Erişim modları hakkında daha fazla bilgi için Kubernetes kalıcı birim'e bakın.
adlı
azure-file-pvc.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. öğesininstorageClassNameönceki adımda oluşturduğunuz depolama sınıfıyla eşleştiğinden emin olun.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-azurefile spec: accessModes: - ReadWriteMany storageClassName: my-azurefile resources: requests: storage: 100GiUyarı
Depolama sınıfınız için SKU kullanıyorsanız
Premium_LRSiçin en düşük değerstorageolmalıdır100Gi.komutunu kullanarak PVC'yi
kubectl applyoluşturun.kubectl apply -f azure-file-pvc.yamlTamamlandıktan sonra dosya paylaşımı oluşturulur. Kubernetes bağlantı bilgilerini ve kimlik bilgilerini içeren bir gizlilik de oluşturulur. PVC'nin
kubectl getdurumunu görüntülemek için komutunu kullanabilirsiniz:kubectl get pvc my-azurefileKomutun çıkışı aşağıdaki örneğe benzer:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-azurefile Bound pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477 100Gi RWX my-azurefile 5m
PVC'yi monte etme
Aşağıdaki YAML, /mnt/azure yoluna Azure Dosyalar dosya paylaşımını bağlamak için PVC my-azurefile kullanan bir pod oluşturur. Windows Server kapsayıcıları için Windows yol kuralını kullanarak mountPath gibi bir belirtin.
adlı
azure-pvc-files.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın.claimNameöğesinin, önceki adımda oluşturduğunuz PVC ile eşleştiğinden emin olun.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: my-azurefilePod'u oluşturmak için
kubectl applykomutunu kullanın.kubectl apply -f azure-pvc-files.yamlArtık Azure Dosyalar dosya paylaşımınızın /mnt/azure dizinine bağlı olduğu çalışan bir podunuz var. Bu yapılandırmayı,
kubectl describekomutunu kullanarak podunuzu incelerken görebilirsiniz. Aşağıdaki daraltılmış örnek çıktı, kapsayıcıya bağlanan birimi gösterir.Containers: mypod: Container ID: docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e Image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine Image ID: docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 State: Running Started: Fri, 01 Mar 2019 23:56:16 +0000 Ready: True Mounts: /mnt/azure from volume (rw) /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro) [...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: my-azurefile ReadOnly: false [...]
Bağlama seçenekleri
Kubernetes sürüm 1.13.0 ve üzeri için fileMode ve dirMode varsayılan değerleridir 0777. Depolama sınıfı kullanarak kalıcı birimleri dinamik olarak sağlarken, montaj seçeneklerini depolama sınıfı bildiriminde doğrudan tanımlayabilirsiniz. Ayrıntılar için bkz . Bağlama seçenekleri. Aşağıdaki örnekte, bu izinlerin olarak 0777ayarlanması gösterilmektedir:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- actimeo=30
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
skuName: Premium_LRS
Dinamik birimler için depolama sınıfı parametreleri
Aşağıdaki tablo, PVC'niz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreleri içerir.
| İsim | Meaning | Kullanılabilir Değer | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| accountAccessTier | Depolama hesabı için erişim katmanı | Standart hesap Hot veya Cool seçebilir, Premium hesap ise yalnızca Premium seçebilir. |
Hayı | Empty. Farklı depolama hesabı türleri için varsayılan ayarı kullanın. |
| accountQuota | Bir hesabın kotasını sınırlar. GB cinsinden maksimum kota belirtebilirsiniz (varsayılan olarak 102.400 GB). Hesap belirtilen kotayı aşarsa, sürücü hesabı seçmeyi atlar. | Hayı | 102400 |
|
| allowBlobPublicAccess | Sürücü tarafından oluşturulan depolama hesabı için tüm bloblara veya kapsayıcılara genel erişim izni verme veya erişimi reddetme. |
true veya false |
Hayı | false |
| disableDeleteRetentionPolicy | Sürücü tarafından oluşturulan depolama hesabı için DeleteRetentionPolicy'nin devre dışı bırakılıp devre dışı bırakılmayacağını belirtin. |
true veya false |
Hayı | false |
| folderName | Azure dosya paylaşımında klasör adını belirtin. | Azure dosya paylaşımında var olan klasör adı. | Hayı | Dosya paylaşımında klasör adı yoksa bağlama başarısız olur. |
| getLatestAccount | Oluşturma zamanına göre en son hesap anahtarının alınıp alınmayacağını belirler. Bu sürücü varsayılan olarak ilk anahtarı alır. |
true veya false |
Hayı | false |
| location | Azure depolama hesabının Azure bölgesini belirtin. | Örneğin, eastus. |
Hayı | Sürücü boşsa geçerli AKS kümesiyle aynı konum adını kullanır. |
| matchTags | Sürücü uygun bir depolama hesabı bulmaya çalıştığında etiketleri eşleştirin. |
true veya false |
Hayı | false |
| networkEndpointType 1 | Sürücü tarafından oluşturulan depolama hesabı için ağ uç noktası türünü belirtin. Belirtilirse privateEndpoint , depolama hesabı için özel bir uç nokta oluşturulur. Diğer durumlarda, varsayılan olarak bir hizmet uç noktası oluşturulur. |
"",privateEndpoint |
Hayı | "" |
| protocol | Dosya paylaşımı protokollerini belirtin. |
smb, nfs |
Hayı | smb |
| requireInfraEncryption | Hizmetin, sürücü tarafından oluşturulan depolama hesabı için bekleyen veriler için platform tarafından yönetilen anahtarlarla ikincil bir şifreleme katmanı uygulayıp uygulamayacağını belirtin. |
true veya false |
Hayı | false |
| resourceGroup | Azure Diskleri için kaynak grubunu belirtin. | Mevcut kaynak grubu adı | Hayı | Eğer boşsa, sürücü mevcut AKS kümesiyle aynı kaynak grubu adını kullanır. |
| selectRandomMatchingAccount | Eşleşen bir hesabın rastgele seçilip seçileceğini belirler. Varsayılan olarak, sürücü her zaman ilk eşleşen hesabı alfabetik sırada seçer (Not: Bu sürücü hesap arama önbelleğini kullanır ve bu da dosya oluşturma işleminin birden çok hesap arasında eşit olmayan bir şekilde dağıtılmasına neden olur). |
true veya false |
Hayı | false |
| server | Azure depolama hesabı sunucu adresini belirtin. | Var olan sunucu adresi, örneğin accountname.privatelink.file.core.windows.net. |
Hayı | Sürücü boşsa varsayılan accountname.file.core.windows.net veya diğer bağımsız bulut hesabı adresini kullanır. |
| shareAccessTier | Dosya paylaşımı için erişim katmanı | Genel amaçlı v2 hesabı TransactionOptimized (varsayılan), Hot ve Cool arasında seçim yapabilir. Yalnızca dosya paylaşımları için premium depolama hesabı türü. |
Hayı | Empty. Farklı depolama hesabı türleri için varsayılan ayarı kullanın. |
| shareName | Azure dosya paylaşımı adını belirtin. | Mevcut veya yeni Azure dosya paylaşımı adı. | Hayı | Sürücü boşsa bir Azure dosya paylaşımı adı oluşturur. |
| shareNamePrefix | Sürücü tarafından oluşturulan Azure dosya paylaşımı adı ön ekini belirtin. | Paylaşım adı yalnızca küçük harf, sayı, kısa çizgi içerebilir ve uzunluk 21 karakterden az olmalıdır. | Hayı | |
| skuName | Azure Dosyalar depolama hesabı türü (diğer ad: storageAccountType) |
Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS, Standard_RAGZRS, Premium_LRS, Premium_ZRS, StandardV2_LRS, StandardV2_ZRS, StandardV2_GRS, StandardV2_GZRS, PremiumV2_LRS, PremiumV2_ZRS |
Hayı | Standard_LRSPremium hesap türü için en düşük dosya paylaşımı boyutu 100 GB'tır. ZRS hesap türü sınırlı bölgelerde desteklenir. NFS dosya paylaşımı yalnızca Premium hesap türünü destekler. Standart V2 SKU adları, Azure Files tarafından sağlanan v2 modeli içindir. |
| storageAccount | Bir Azure depolama hesabı adı belirtin. | storageAccountName | -Hayır | Belirli bir depolama hesabı adı sağlanmadığında, sürücü aynı kaynak grubundaki hesap ayarlarıyla eşleşen uygun bir depolama hesabı arar. Eşleşen bir depolama hesabı bulamazsa yeni bir depolama hesabı oluşturur. Ancak, bir depolama hesabı adı belirtilirse, depolama hesabının zaten mevcut olması gerekir. |
| storageEndpointSuffix | Azure depolama uç noktası son ekini belirtin. |
core.windows.net, core.chinacloudapi.cnvb. |
Hayı | Sürücü boşsa, bulut ortamına göre varsayılan depolama uç noktası sonekini kullanır. Örneğin, core.windows.net. |
| tags | Etiketler yeni depolama hesabında oluşturulur. | Etiket biçimi: 'foo=aaa,bar=bbb' | Hayı | "" |
1 Depolama hesabı sürücü tarafından oluşturulduysa, yalnızca depolama sınıfında parametre belirtmeniz networkEndpointType: privateEndpoint gerekir. CSI sürücüsü, özel uç noktayı ve özel DNS bölgesini (adlı privatelink.file.core.windows.net) hesapla birlikte oluşturur. Kendi depolama hesabınızı getirirseniz depolama hesabı için özel uç nokta oluşturmanız gerekir. Azure Dosyalar depolamayı ağdan yalıtılmış bir kümede kullanıyorsanız, "networkEndpointType: privateEndpoint" ile özel bir depolama sınıfı oluşturmanız gerekir. Referans olarak bu örneği izleyebilirsiniz.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azurefile-csi
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
skuName: Premium_LRS # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS
networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- dir_mode=0777 # modify this permission if you want to enhance the security
- file_mode=0777
- mfsymlinks
- cache=strict # https://linux.die.net/man/8/mount.cifs
- nosharesock # reduce probability of reconnect race
- actimeo=30 # reduce latency for metadata-heavy workload
- nobrl # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
PV'ler için statik tahsis parametreleri
Aşağıdaki tablo, PV tanımlamak için kullanabileceğiniz parametreleri içerir.
| İsim | Meaning | Kullanılabilir Değer | Mandatory | Varsayılan değer |
|---|---|---|---|---|
| volumeAttributes.resourceGroup | Bir Azure kaynak grubu adı belirtin. | myResourceGroup | Hayı | Sürücü boşsa geçerli kümeyle aynı kaynak grubu adını kullanır. |
| volumeAttributes.storageAccount | Mevcut bir Azure depolama hesabı adı belirtin. | storageAccountName | Yes | |
| volumeAttributes.shareName | Bir Azure dosya paylaşımı adı belirtin. | fileShareName | Yes | |
| volumeAttributes.folderName | Azure dosya paylaşımında bir klasör adı belirtin. | folderName | Hayı | Dosya paylaşımında klasör adı yoksa bağlama başarısız olur. |
| volumeAttributes.protocol | Dosya paylaşımı protokollerini belirtin. |
smb, nfs |
Hayı | smb |
| volumeAttributes.server | Azure depolama hesabı sunucu adresini belirtme | Var olan sunucu adresi, örneğin accountname.privatelink.file.core.windows.net. |
Hayı | Sürücü boşsa varsayılan accountname.file.core.windows.net veya diğer bağımsız bulut hesabı adresini kullanır. |
PV anlık görüntü sınıfı oluşturma
Azure Dosyalar CSI sürücüsü , kalıcı birimlerin ve temel alınan dosya paylaşımlarının anlık görüntülerinin oluşturulmasını destekler.
kubectl apply komutuyla birim anlık görüntüsü sınıfı oluşturun:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshotclass-azurefile.yamlKomutun çıkışı aşağıdaki örneğe benzer:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azurefile-vsc createdDaha önce oluşturulan PVC'den birim anlık görüntüsü oluşturun (
pvc-azurefile).kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshot-azurefile.yamlKomutun çıkışı aşağıdaki örneğe benzer:
volumesnapshot.snapshot.storage.k8s.io/azurefile-volume-snapshot createdAşağıdaki komutu çalıştırarak anlık görüntünün doğru oluşturulduğunu doğrulayın:
kubectl describe volumesnapshot azurefile-volume-snapshotKomutun çıkışı aşağıdaki örneğe benzer:
Name: azurefile-volume-snapshot Namespace: default Labels: <none> Annotations: API Version: snapshot.storage.k8s.io/v1beta1 Kind: VolumeSnapshot Metadata: Creation Timestamp: 2020-08-27T22:37:41Z Finalizers: snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection snapshot.storage.kubernetes.io/volumesnapshot-bound-protection Generation: 1 Resource Version: 955091 Self Link: /apis/snapshot.storage.k8s.io/v1beta1/namespaces/default/volumesnapshots/azurefile-volume-snapshot UID: c359a38f-35c1-4fb1-9da9-2c06d35ca0f4 Spec: Source: Persistent Volume Claim Name: pvc-azurefile Volume Snapshot Class Name: csi-azurefile-vsc Status: Bound Volume Snapshot Content Name: snapcontent-c359a38f-35c1-4fb1-9da9-2c06d35ca0f4 Ready To Use: false Events: <none>
Azure Files PV'sini yeniden boyutlandırma
PVC için daha büyük bir birim 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.
Uyarı
Talebi karşılamak için asla yeni bir PV oluşturulmaz. Bunun yerine, mevcut bir birim yeniden boyutlandırılır. Kalıcı birimleri küçültme şu anda desteklenmiyor.
AKS'de azurefile-csi yerleşik depolama sınıfı zaten genişletmeyi destekler, bu nedenle bu depolama sınıfıyla daha önce oluşturduğumuz PVC'yi kullanın. PVC, 100 GiB dosya paylaşımı istedi. Bunu şu şekilde çalıştırarak doğrulayabiliriz:
kubectl exec -it nginx-azurefile -- df -h /mnt/azurefile
Komutun çıkışı aşağıdaki örneğe benzer:
Filesystem Size Used Avail Use% Mounted on
//f149b5a219bd34caeb07de9.file.core.windows.net/pvc-5e5d9980-da38-492b-8581-17e3cad01770 100G 128K 100G 1% /mnt/azurefile
Alanı
spec.resources.requests.storageartırarak PVC'yi genişletin.kubectl patch pvc pvc-azurefile --type merge --patch '{"spec": {"resources": {"requests": {"storage": "200Gi"}}}}'Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azurefile patchedHem PVC'nin hem de pod içindeki dosya sisteminin yeni boyutu gösterdiğini doğrulayın:
kubectl get pvc pvc-azurefile NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azurefile Bound pvc-5e5d9980-da38-492b-8581-17e3cad01770 200Gi RWX azurefile-csi 64m kubectl exec -it nginx-azurefile -- df -h /mnt/azurefile Filesystem Size Used Avail Use% Mounted on //f149b5a219bd34caeb07de9.file.core.windows.net/pvc-5e5d9980-da38-492b-8581-17e3cad01770 200G 128K 200G 1% /mnt/azurefile
Özel Azure Dosyalar depolaması (özel uç nokta) ile PV kullanma
Azure Dosyalar kaynaklarınız özel bir uç noktayla korunuyorsa kendi depolama sınıfınızı oluşturmanız gerekir. Özel uç nokta IP adresini bağlantı dizesinin FQDN'sine çözümlemek için DNS ayarlarınızı yapılandırdığından emin olun.
Aşağıdaki parametreleri özelleştirin:
resourceGroup: Depolama hesabının dağıtıldığı kaynak grubu.storageAccount: Depolama hesabı adı.server: Depolama hesabının özel uç noktasının FQDN'sini.
adlı
private-azure-file-sc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimi dosyaya yapıştırın. Yerine<resourceGroup>ve<storageAccountName>değerlerini değiştirin. Örneğin:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: private-azurefile-csi provisioner: file.csi.azure.com allowVolumeExpansion: true parameters: resourceGroup: <resourceGroup> storageAccount: <storageAccountName> server: <storageAccountName>.file.core.windows.net reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict # https://linux.die.net/man/8/mount.cifs - nosharesock # reduce probability of reconnect race - actimeo=30 # reduce latency for metadata-heavy workloadkomutunu kullanarak depolama sınıfını
kubectl applyoluşturun:kubectl apply -f private-azure-file-sc.yamlKomutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/private-azurefile-csi createdadlı
private-pvc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimi dosyaya yapıştırın:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: private-azurefile-pvc spec: accessModes: - ReadWriteMany storageClassName: private-azurefile-csi resources: requests: storage: 100Gikubectl apply komutunu kullanarak PVC'yi oluşturun:
kubectl apply -f private-pvc.yaml
Azure Dosyalar depolamaya erişmek için Yönetilen Kimlik kullanma (Önizleme)
Azure Dosyalar artık SMB erişimi için yönetilen kimlik tabanlı kimlik doğrulamasını destekliyor. Bu özellik sayesinde AKS'de çalışan uygulamalarınız depolama hesabı anahtarlarını veya kimlik bilgilerini depolamaya veya yönetmeye gerek kalmadan Azure Dosyalar paylaşımlarına güvenli bir şekilde erişebilir. Yönetilen kimlikler kolaylaştırılmış ve güvenli bir kimlik doğrulama mekanizması sağlayarak erişim yönetimini basitleştirir ve kimlik bilgilerinin açığa çıkarmasıyla ilişkili riski azaltır. Dinamik birim veya statik birim oluşturabilirsiniz.
Uyarı
AKS'de Azure Dosyaları için yönetilen kimlik desteği, Linux düğümlerinde AKS sürüm 1.34'den itibaren önizlemede kullanılabilir.
Dinamik olarak sağlanan birimlerde yönetilen kimliği etkinleştirmek için şu adımları izleyin:
YaML dosyası kullanarak yönetilen kimlik etkinleştirilmiş bir depolama sınıfı oluşturun, örneğin aşağıdaki
azurefile-csi-managed-identity.yamlörnek içerikle.mountWithManagedIdentity: "true"üzerindeparametersayarlayın.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azurefile-csi provisioner: file.csi.azure.com parameters: resourceGroup: EXISTING_RESOURCE_GROUP_NAME # optional, node resource group by default if it's not provided storageAccount: EXISTING_STORAGE_ACCOUNT_NAME # optional, a new account will be created if it's not provided mountWithManagedIdentity: "true" # optional, clientID of the managed identity, kubelet identity would be used by default if it's not provided clientID: "xxxxx-xxxx-xxx-xxx-xxxxxxx" reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - dir_mode=0777 # modify this permission if you want to enhance the security - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict # https://linux.die.net/man/8/mount.cifs - nosharesock # reduce probability of reconnect race - actimeo=30 # reduce latency for metadata-heavy workload - nobrl # disable sending byte range lock requests to the serverAşağıdaki komutu çalıştırarak bu depolama sınıfını uygulayın:
kubectl apply -f azurefile-csi-managed-identity.yamlYeni depolama sınıfını kullanarak StatefulSet'inizi veya iş yükünüzü bu PVC'yi referans alan bir şekilde dağıtın ki birim, yönetilen kimlik doğrulaması kullanılarak sağlansın. PVC bildiriminizde
storageClassName: azurefile-csi-managed-identityolarak ayarlayın. Örneğin:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurefile-managed-identity-pvc spec: accessModes: - ReadWriteMany storageClassName: azurefile-csi-managed-identity resources: requests: storage: 100Gi
Azure Dosyaları NFS hakkında bilgi edinin
Azure Dosyalar , NFS v4.1 protokollerini destekler. Azure Dosyalar için NFS sürüm 4.1 desteği, yüksek kullanılabilirlik ve dayanıklılık sağlayan, dağıtılmış bir dayanıklı depolama platformu üzerinde tamamen yönetilen bir NFS sistemi hizmeti sunar.
Bu seçenek, yerinde veri güncelleştirmeleri içeren rastgele erişim iş yükleri için iyileştirilmiştir ve tam POSIX dosya sistemi desteği sağlar. Bu bölümde, BIR AKS kümesinde Azure Dosya CSI sürücüsüyle NFS paylaşımlarının nasıl kullanılacağı gösterilmektedir.
Uyarı
Seçili sanal ağa erişime izin vermek yerine özel bir uç nokta kullanabilirsiniz.
Bu bölümde AKS ile Azure Files NFS 4.1 kullanırken performansı ve güvenliği en üst düzeye çıkarma işlemi açıklanmaktadır. Nasıl yapılacağını öğrenin:
NFS okuma ve yazma boyutu ayarlarını iyileştirme
NFS depolama sınıfı oluşturma ve yapılandırma
NFS ile desteklenen birimleri kullanan iş yüklerini dağıtın
AKS kümeniz ile Azure Dosyalar arasında hareket eden verileri korumak için Aktarımda Şifrelemeyi (EiT) etkinleştirin.
Bu bölümde, rsize (okuma boyutu) ve wsize (yazma boyutu) seçenekleriyle Azure Dosyalar CSI sürücüsüyle NFS performans ayarlama yaklaşımı hakkında bilgi sağlanır.
rsize ve wsize seçenekleri bir NFS işleminin en büyük aktarım boyutunu ayarlar.
rsize veya wsize bağlanma sırasında belirtilmezse, istemci ve sunucu ikisi tarafından desteklenen en büyük boyut üzerinde anlaşır. Şu anda hem Azure Dosyalar hem de modern Linux dağıtımları 1.048.576 bayt (1 MiB) kadar büyük okuma ve yazma boyutlarını desteklemektedir.
En iyi performans, verimli istemci-sunucu iletişiminin temelidir.
Bağlama okuma ve yazma seçeneği boyutu değerlerini artırmak veya azaltmak NFS performansını artırabilir. İstemci ve sunucu arasında aktarılan okuma/yazma paketlerinin varsayılan boyutu NFS sürüm 2 için 8 KB, NFS sürüm 3 ve 4 için 32 KB'tır. Bu varsayılanlar çok büyük veya çok küçük olabilir. NFS okuma yanıtı ve yazma isteği için daha küçük paketler göndererek, rsize ve wsize değerlerini azaltmak, tıkanık bir ağda NFS performansını artırabilir. Ancak bu azaltma, ağ genelinde veri göndermek için gereken paket sayısını artırarak istemci ve sunucuda toplam ağ trafiğini ve CPU kullanımını artırabilir.
Verimli paket aktarımını sürdüren, verimliliği azaltmayan ve gecikme süresini artırmayan bir rsize ve wsize bulmak için test gerçekleştirmeniz önemlidir.
Örneğin, rsize ve wsize öğelerini en fazla 256-KiB olacak şekilde yapılandırmak için depolama sınıfında mountOptions aşağıdaki gibi yapılandırın:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: azurefile-csi-nfs
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
protocol: nfs
mountOptions:
- nconnect=4
- noresvport
- actimeo=30
- rsize=262144
- wsize=262144
Diğer depolama sınıfı örnekleri
Windows konteynerleri
Azure Dosyalar CSI sürücüsü, Windows düğümleri ve kapsayıcıları da destekler. Windows kapsayıcılarını kullanmak için Windows kapsayıcıları hızlı başlangıcını izleyerek bir Windows düğüm havuzu ekleyin.
Windows düğüm havuzunuz olduktan sonra
azurefile-csigibi yerleşik depolama sınıflarını kullanın veya özel bir tane oluşturun. kubectl apply komutunu çalıştırarak zaman damgalarını bir dosyayadata.txtkaydeden örnek bir Windows tabanlı durum bilgisi olan küme dağıtabilirsiniz:kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/windows/statefulset.yamlKomutun çıkışı aşağıdaki örneğe benzer:
statefulset.apps/busybox-azurefile createdAşağıdaki kubectl exec komutunu çalıştırarak birimin içeriğini doğrulayın:
kubectl exec -it busybox-azurefile-0 -- cat c:\\mnt\\azurefile\\data.txt # on Linux or MacOS Bash kubectl exec -it busybox-azurefile-0 -- cat c:\mnt\azurefile\data.txt # on Windows Powershell or CMDKomutların çıkışı aşağıdaki örneğe benzer:
2020-08-27 22:11:01Z 2020-08-27 22:11:02Z 2020-08-27 22:11:04Z (...)
Sonraki Adımlar
- Azure Files CSI sürücü parametreleri için bkz. CSI sürücü parametreleri.
- Disk tabanlı depolama çözümleri hakkında daha fazla bilgi için bkz. AKS'de disk tabanlı çözümler.
- 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.
- Azure ultra disk hakkında daha fazla bilgi için bkz. [Azure Kubernetes Service'te (AKS) ultra diskleri kullanma][use-ultra-disks].
- Azure etiketleri hakkında daha fazla bilgi için bkz. Azure Kubernetes Service'te (AKS) Azure etiketlerini kullanma.