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 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ülerini ve eklentiler olan yeni CSI sürücülerini ifade eder.
Azure Dosyalar ile kalıcı birim 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. Birden çok pod aynı depolama birimine eş zamanlı erişime ihtiyaç duyuyorsa, Sunucu İleti Bloğu (SMB) veya NFS protokollerini 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. Statik sağlama için bkz. Azure Dosyalar paylaşımıyla manuel birim oluşturma ve kullanma.
Uyarı
Azure Dosya CSI sürücüsünün yalnızca anahtar tabanlı (NTLM v2) kimlik doğrulaması kullanılarak SMB dosya paylaşımlarının bağlanmasına izin verildiğini ve bu nedenle Azure Dosya paylaşımı ayarlarının en yüksek güvenlik profilini desteklemediğini unutmayın. Öte yandan, NFS dosya paylaşımlarını bağlamak için anahtar tabanlı kimlik doğrulaması gerekmez.
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.
Yerleşik depolama sınıflarını kullanarak Azure Dosyalar VM'lerini dinamik olarak oluşturma
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:
- 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
Uyarı
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ını kullanmanızı öneririz.
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ırabilir, yalnızca kalıcı birim talebi (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 dosya paylaşımı 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.
kubectl applykomutlarını çalıştırarak, geçerli tarihi bir outfile
içine yazdıran örnek bir PVC ve pod oluşturun:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/pvc-azurefile-csi.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/nginx-pod-azurefile.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
persistentvolumeclaim/pvc-azurefile created
pod/nginx-azurefile created
Pod çalışır duruma geldikten sonra, aşağıdaki komutu çalıştırıp çıktının outfile
öğesini içerdiğini doğrulayarak dosya paylaşımının doğru bir şekilde monte edildiğini teyit edebilirsiniz.
kubectl exec nginx-azurefile -- ls -l /mnt/azurefile
Komutun çıkışı aşağıdaki örneğe benzer:
total 29
-rwxrwxrwx 1 root root 29348 Aug 31 21:59 outfile
Ö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ın kendi parametrelerinizle özelleştirilmesini isteyebilirsiniz. Örneğin, dosya paylaşımını mountOptions
yapılandırmak için aşağıdaki bildirimi kullanın.
FileMode ve dirMode için varsayılan değer Kubernetes'e bağlı dosya paylaşımları için 0777'dir. Depolama sınıfı nesnesinde farklı bağlama seçeneklerini belirtebilirsiniz.
adlı azure-file-sc.yaml
bir dosya oluşturun ve aşağıdaki örnek bildirimi yapıştırın:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: my-azurefile
provisioner: file.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- dir_mode=0640
- file_mode=0640
- uid=0
- gid=0
- mfsymlinks
- cache=strict # https://linux.die.net/man/8/mount.cifs
- nosharesock
parameters:
skuName: Standard_LRS
kubectl apply komutunu çalıştırarak depolama sınıfını oluşturun:
kubectl apply -f azure-file-sc.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/my-azurefile created
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.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azurefile-vsc created
Bu öğreticinin başında dinamik olarak oluşturduğumuz PVC'den bir hacim anlık görüntüsü oluşturun.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshot-azurefile.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
volumesnapshot.snapshot.storage.k8s.io/azurefile-volume-snapshot created
Aş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-snapshot
Komutun çı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>
Kalıcı hacmi 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şturulan 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.storage
artı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 patched
Hem 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 kalıcı birim 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ığınızdan 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.yaml
bir dosya oluşturun ve aşağıdaki örnek bildirimi dosyaya yapıştırın. Yerine <resourceGroup>
ve <storageAccountName>
değerlerini değiştirin.
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 workload
komutunu kullanarak depolama sınıfını kubectl apply
oluşturun:
kubectl apply -f private-azure-file-sc.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/private-azurefile-csi created
adlı private-pvc.yaml
bir 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: 100Gi
kubectl apply komutunu kullanarak PVC'yi oluşturun:
kubectl apply -f private-pvc.yaml
NFS dosya paylaşımları
Azure Dosyalar, NFS v4.1 protokollerini destekler. Azure Dosyalar için NFS sürüm 4.1 desteği, yüksek oranda kullanılabilir ve yüksek oranda dayanıklı dağıtılmış dayanıklı bir depolama platformu üzerinde oluşturulmuş bir hizmet olarak tam olarak yönetilen bir NFS dosya sistemi sağlar.
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.
Önkoşullar
- AKS kümesi Denetim düzlemi kimliğiniz (AKS kümenizin adı) VNet ve NetworkSecurityGroup'ta Katkı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.
Uyarı
Seçili sanal ağa erişime izin vermek yerine özel bir uç nokta kullanabilirsiniz.
Okuma ve yazma boyutu seçeneklerini iyileştirme
Bu bölümde , rsize ve wsize 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. Bağlamada rsize veya wsize belirtilmezse, istemci ve sunucu ikisi tarafından desteklenen en büyük boyut üzerinde anlaşma sağlar. Ş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. Rsize ve wsize değerlerini azaltmak, her NFS okuma yanıt ve yazma isteği için daha küçük paketler göndererek tıkanık bir ağda NFS performansını artırabilir. Ancak bu, 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 ve aktarım hızını azaltmayan ve gecikme süresini artırmayan bir rsize ve wsize bulmak için test yapmanız önemlidir.
Örneğin, 256 KiB'lik maksimum rsize ve wsize değerlerini yapılandırmak için depolama sınıfında öğesini 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
NFS dosya paylaşımı depolama sınıfı oluşturma
adlı nfs-sc.yaml
bir dosya oluşturun ve aşağıdaki bildirimi kopyalayın. Desteklenen mountOptions
öğesinin listesi için bkz. NFS bağlama seçenekleri.
Uyarı
vers
, minorversion
ve sec
Azure Dosya CSI sürücüsü tarafından yapılandırılır. Bildiriminizde bu özellikler için bir değer belirtme desteklenmez.
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
Dosyayı düzenleyip kaydettikten sonra kubectl apply komutuyla depolama sınıfını oluşturun:
kubectl apply -f nfs-sc.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
storageclass.storage.k8s.io/azurefile-csi-nfs created
NFS destekli dosya paylaşımıyla dağıtım oluşturma
Kubectl apply komutuyla zaman damgalarını bir dosyaya data.txt
kaydeden durum bilgisi olan örnek bir küme dağıtabilirsiniz:
kubectl apply -f
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: statefulset-azurefile
labels:
app: nginx
spec:
podManagementPolicy: Parallel # default is OrderedReady
serviceName: statefulset-azurefile
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: statefulset-azurefile
image: mcr.microsoft.com/oss/nginx/nginx:1.19.5
command:
- "/bin/bash"
- "-c"
- set -euo pipefail; while true; do echo $(date) >> /mnt/azurefile/outfile; sleep 1; done
volumeMounts:
- name: persistent-storage
mountPath: /mnt/azurefile
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: nginx
volumeClaimTemplates:
- metadata:
name: persistent-storage
spec:
storageClassName: azurefile-csi-nfs
accessModes: ["ReadWriteMany"]
resources:
requests:
storage: 100Gi
Komutun çıkışı aşağıdaki örneğe benzer:
statefulset.apps/statefulset-azurefile created
Aşağıdaki komutu çalıştırarak birimin içeriğini doğrulayın:
kubectl exec -it statefulset-azurefile-0 -- df -h
Komutun çıkışı aşağıdaki örneğe benzer:
Filesystem Size Used Avail Use% Mounted on
...
/dev/sda1 29G 11G 19G 37% /etc/hosts
accountname.file.core.windows.net:/accountname/pvc-fa72ec43-ae64-42e4-a8a2-556606f5da38 100G 0 100G 0% /mnt/azurefile
...
Uyarı
NFS dosya paylaşımı premium hesapta olduğundan en düşük dosya paylaşımı boyutunun 100 GiB olduğunu unutmayın. Küçük depolama boyutuna sahip bir PVC oluşturursanız, aşağıdakine benzer bir hatayla karşılaşabilirsiniz: dosya paylaşımı oluşturulamadı ... boyut (5)....
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-csi
gibi 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 dosyaya data.txt
kaydeden ö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.yaml
Komutun çıkışı aşağıdaki örneğe benzer:
statefulset.apps/busybox-azurefile created
Aş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/MacOS Bash
kubectl exec -it busybox-azurefile-0 -- cat c:\mnt\azurefile\data.txt # on Windows Powershell/CMD
Komutları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 Dosyalar'ı kullanırken en iyi yöntemler için bkz. Azure Dosyalar depolama alanı sağlama.
- Azure Diskler için CSI sürücüsünü kullanmayı öğrenmek için bkz. CSI sürücüsüyle Azure Diskleri 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.
- Depolama için en iyi yöntemler hakkında daha fazla bilgi için bkz. Azure Kubernetes Service'te depolama ve yedeklemeler için en iyi yöntemler.
Azure Kubernetes Service