Azure Blob depolama Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü kullanma
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 kapsayıcılı iş yüklerine rastgele blok ve dosya depolama sistemlerinin kullanıma sunar.
AKS, CSI'yi benimseyerek ve kullanarak artık Kubernetes'te yeni depolama sistemlerini kullanıma sunma veya mevcut depolama sistemlerini iyileştirme amacıyla eklentiler yazabilir, dağıtabilir ve yineleyebilir. AKS'de CSI sürücülerinin kullanılması, çekirdek Kubernetes koduna dokunmaktan ve yayın döngülerini beklemekten kaçınıyor.
Azure Blob depolamayı bir kapsayıcıya veya poda dosya sistemi olarak bağladığınızda, blob depolamayı çok miktarda yapılandırılmamış veri çalıştıran bir dizi 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
Nesne depolama alanındaki verilere BlobFuse veya Ağ Dosya Sistemi (NFS) 3.0 protokolü kullanılarak uygulamalar tarafından erişilebilir. 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 ve azureblob-nfs-premium.
CSI sürücüleri desteğine sahip bir AKS kümesi oluşturmak için bkz . AKS üzerinde CSI sürücüleri. 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 Blob depolama CSI sürücü özellikleri
Azure Blob depolama CSI sürücüsü aşağıdaki özellikleri destekler:
- BlobFuse ve Ağ Dosya Sistemi (NFS) sürüm 3.0 protokolü
Başlamadan önce
Azure CLI 2.42 veya sonraki bir sürümünün yüklü ve yapılandırılmış olduğundan emin olun. Sürümü bulmak için
az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. Azure CLIaks-preview
uzantısını yüklediyseniz, öğesini çağırarakaz extension update --name aks-preview
uzantıyı en son sürüme güncelleştirdiğinizden emin olun.Kümenizden Azure Blob depolamaya erişmek için daha önce CSI Blob Depolama açık kaynak sürücüsünü yüklediyseniz bu bağlantıdaki adımları gerçekleştirin.
Not
blobfuse-proxy, açık kaynak sürücüsünün yüklenmesi sırasında etkin değilse, açık kaynak sürücüsünün kaldırılması mevcut blobfuse bağlamalarını kesintiye uğratır. Ancak, NFS bağlamaları etkilenmez.
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 az aks create
komutuna ekleyin--enable-blob-driver
:
az aks create \
--enable-blob-driver \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
Sürücüyü mevcut bir kümede etkinleştirmek için aşağıdaki örnekte gösterildiği gibi parametresini az aks update
komutuna ekleyin--enable-blob-driver
:
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 az aks update
komutuna ekleyin--disable-blob-driver
:
az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Azure Blob depolama 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. Aynı depolama birimine birden çok pod için eşzamanlı erişim gerekiyorsa, Ağ Dosya Sistemi (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.
Yerleşik depolama sınıflarını kullanarak Azure Blob depolama VM'lerini dinamik olarak 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:
- 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 ek yerleşik StorageClass vardır.
Her iki depolama sınıfındaki geri kazanma 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.
Not
Kalıcı birimleri küçültme 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 sağlamak için kullanılır. PVC, önceden oluşturulmuş depolama sınıflarından birini veya kullanıcı tanımlı bir depolama sınıfını kullanarak istenen SKU, boyut ve protokol için bir Azure Blob depolama kapsayıcısı oluşturabilir. Pod tanımı oluşturduğunuzda, istenen depolamayı istemek için PVC belirtilir.
StatefulSet Kullanma
İş yükünüz için bir depolama biriminin kalıcı olmasını sağlamak için StatefulSet kullanabilirsiniz. Bu, mevcut birimleri, başarısız olan birimlerin yerini alan yeni Pod'larla eşleştirmeyi kolaylaştırır. Aşağıdaki örneklerde Blobfuse veya NFS protokolü kullanılarak Blob depolama için StatefulSet'in nasıl ayarlanacağı gösterilmektedir.
Önkoşullar
- 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.
adlı
azure-blob-nfs-ss.yaml
bir 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/oss/nginx/nginx:1.22 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: 100Gi
kubectl create komutuyla StatefulSet oluşturun:
kubectl create -f azure-blob-nfs-ss.yaml
Sonraki adımlar
- Statik veya dinamik kalıcı birim ayarlamayı öğrenmek için bkz . Azure Blob depolama ile birim oluşturma ve kullanma.
- 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 Dosyalar için CSI sürücüsünü kullanmayı öğrenmek için bkz. CSI sürücüsüyle Azure Dosyalar 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