Azure Container Storage'ı Azure yönetilen disklerle kullanma
Azure Container Storage , kapsayıcılar için yerel olarak oluşturulmuş bulut tabanlı bir birim yönetimi, dağıtımı ve düzenleme hizmetidir. Bu makalede, Azure Container Storage'ı Kubernetes iş yükleriniz için arka uç depolama alanı olarak Azure yönetilen disklerini kullanacak şekilde yapılandırma adımları gösterilmektedir. Sonunda, depolama alanı olarak Azure yönetilen diskleri kullanan bir pod'nuz olacak.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Bu makale, Azure CLI'nın en son sürümünü (2.35.0 veya üzeri) gerektirir. Bkz. Azure CLI'yi yükleme. Azure Cloud Shell'de Bash ortamını kullanıyorsanız en son sürüm zaten yüklüdür. Komutları Azure Cloud Shell yerine yerel olarak çalıştırmayı planlıyorsanız, bunları yönetici ayrıcalıklarıyla çalıştırdığınızdan emin olun. Daha fazla bilgi için bkz . Azure Cloud Shell'i kullanmaya başlama.
Kubernetes komut satırı istemcisine ihtiyacınız olacaktır.
kubectl
Azure Cloud Shell kullanıyorsanız zaten yüklüdür veya komutunu çalıştırarakaz aks install-cli
yerel olarak yükleyebilirsiniz.Azure Container Storage'ı henüz yüklemediyseniz Azure Container Storage'ı Azure Kubernetes Service ile kullanma başlığındaki yönergeleri izleyin.
Hedef bölgenizin Azure Container Storage bölgelerinde desteklenip desteklenmediğini denetleyin.
- Azure Container Storage'ı Azure yönetilen disklerle kullanmak için AKS kümenizin küme düğümleri için en az dört sanal CPU'ya (vCPU) sahip standard_d4s_v5 gibi en az üç genel amaçlı SANAL makineden oluşan bir düğüm havuzuna sahip olması gerekir.
Kalıcı birimler oluşturma ve ekleme
Kalıcı birim oluşturmak ve eklemek için bu adımları izleyin.
1. Depolama havuzu oluşturma
İlk olarak, Kubernetes kümeniz için bir YAML bildirim dosyasında tanımlayarak mantıksal bir depolama grubu olan bir depolama havuzu oluşturun.
Depolama havuzu oluşturmak için aşağıdaki seçeneklere sahipsiniz:
- Dinamik depolama havuzu oluşturma
- Önceden sağlanan Azure yönetilen disklerini kullanarak önceden sağlanan depolama havuzu oluşturma
- Kendi şifreleme anahtarınızı kullanarak dinamik depolama havuzu oluşturma (isteğe bağlı)
veya az aks update
komutlarını kullanarak az aks create
Azure Container Storage'ı etkinleştirdiyseniz, zaten bir depolama havuzunuz olabilir. Depolama havuzlarının listesini almak için kullanın kubectl get sp -n acstor
. Kullanmak istediğiniz zaten kullanılabilir bir depolama havuzunuz varsa, bu adımı atlayabilir ve Kullanılabilir depolama sınıflarını görüntüleme bölümüne geçebilirsiniz.
Dinamik depolama havuzu oluşturma
Azure Diskler için dinamik depolama havuzu oluşturmak için bu adımları izleyin.
Gibi
code acstor-storagepool.yaml
bir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.Aşağıdaki kodu yapıştırın. Depolama havuzu adı değeri istediğiniz gibi olabilir. skuName için performans ve yedeklilik düzeyini belirtin. Kabul edilebilir değerler Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS ve StandardSSD_ZRS'dır. Depolama için Gi veya Ti'de havuz için depolama kapasitesi miktarını belirtin.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS resources: requests: storage: 1Ti
UltraSSD_LRS veya PremiumV2_LRS disk kullanıyorsanız, depolama havuzu tanımınızdaki ve parametrelerini kullanarak
IOPSReadWrite
IOPS veMBpsReadWrite
aktarım hızı ayarlayabilirsiniz.IOPSReadWrite
Ultra SSD ve Premium v2 LRS diskleri için izin verilen IOPS sayısını ifade eder. Daha fazla bilgi için bkz . Ultra Disk IOPS ve Premium SSD v2 IOPS.MBpsReadWrite
Ultra SSD ve Premium v2 LRS diskleri için izin verilen bant genişliğini ifade eder. MB/sn saniye başına milyonlarca bayta (MB/sn = 10^6 Bayt/saniye) başvurur. Daha fazla bilgi için bkz . Ultra Disk aktarım hızı ve Premium SSD v2 aktarım hızı.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: PremiumV2_LRS iopsReadWrite: 5000 mbpsReadWrite: 200 resources: requests: storage: 1Ti
YAML bildirim dosyasını kaydedin ve depolama havuzunu oluşturmak için uygulayın.
kubectl apply -f acstor-storagepool.yaml
Depolama havuzu oluşturma işlemi tamamlandığında aşağıdaki gibi bir ileti görürsünüz:
storagepool.containerstorage.azure.com/azuredisk created
Depolama havuzunun durumunu denetlemek için bu komutu da çalıştırabilirsiniz. değerini depolama havuzu adı değerinizle değiştirin
<storage-pool-name>
. Bu örnekte değer azuredisk olacaktır.kubectl describe sp <storage-pool-name> -n acstor
Depolama havuzu oluşturulduğunda, Azure Container Storage adlandırma kuralını acstor-<storage-pool-name>
kullanarak sizin adınıza bir depolama sınıfı oluşturur. Artık kullanılabilir depolama sınıflarını görüntüleyebilir ve kalıcı bir birim talebi oluşturabilirsiniz.
Önceden sağlanan depolama havuzu oluşturma
Önceden sağlanan Azure yönetilen diskleriniz varsa, bu diskleri kullanarak önceden sağlanan bir depolama havuzu oluşturabilirsiniz. Diskler zaten sağlandığından, depolama havuzunu oluştururken skuName veya depolama kapasitesini belirtmeniz gerekmez.
Azure Diskleri için önceden sağlanan bir depolama havuzu oluşturmak için bu adımları izleyin.
Azure Portal’ında oturum açın.
Kullanmak istediğiniz her disk için Azure yönetilen diskine gidin ve Ayarlar>Özellikleri'ni seçin. Kaynak Kimliği altındaki dizenin tamamını kopyalayın ve bir metin dosyasına yerleştirin.
Gibi
code acstor-storagepool.yaml
bir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.Aşağıdaki kodu yapıştırın. Depolama havuzu adı değeri istediğiniz gibi olabilir. değerini her yönetilen diskin kaynak kimliğiyle değiştirin
<resource-id>
. Dosyayı kaydedin.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: sp-preprovisioned namespace: acstor spec: poolType: azureDisk: disks: - reference <resource-id1> - reference <resource-id2>
Depolama havuzunu oluşturmak için YAML bildirim dosyasını uygulayın.
kubectl apply -f acstor-storagepool.yaml
Depolama havuzu oluşturma işlemi tamamlandığında aşağıdaki gibi bir ileti görürsünüz:
storagepool.containerstorage.azure.com/sp-preprovisioned created
Depolama havuzunun durumunu denetlemek için bu komutu da çalıştırabilirsiniz. değerini depolama havuzu adı değerinizle değiştirin
<storage-pool-name>
. Bu örnekte değer sp-preprovisioned olacaktır.kubectl describe sp <storage-pool-name> -n acstor
Depolama havuzu oluşturulduğunda, Azure Container Storage adlandırma kuralını acstor-<storage-pool-name>
kullanarak sizin adınıza bir depolama sınıfı oluşturur. Artık kullanılabilir depolama sınıflarını görüntüleyebilir ve kalıcı bir birim talebi oluşturabilirsiniz.
Kendi şifreleme anahtarınızı kullanarak dinamik depolama havuzu oluşturma (isteğe bağlı)
Azure depolama hesabındaki tüm veriler bekleme sırasında şifrelenir. Varsayılan olarak, veriler Microsoft tarafından yönetilen anahtarlarla şifrelenir. Şifreleme anahtarları üzerinde daha fazla denetim için, oluşturacağınız kalıcı birimleri şifrelemek üzere depolama havuzunuzu oluştururken müşteri tarafından yönetilen anahtarlar (CMK) sağlayabilirsiniz.
Sunucu tarafı şifreleme için kendi anahtarınızı kullanmak için anahtarı olan bir Azure Key Vault'unuz olmalıdır. Key Vault'ta temizleme koruması etkinleştirilmelidir ve Azure RBAC izin modelini kullanmalıdır. Linux'ta müşteri tarafından yönetilen anahtarlar hakkında daha fazla bilgi edinin.
Depolama havuzunuzu oluştururken CMK parametrelerini tanımlamanız gerekir. Gerekli CMK şifreleme parametreleri şunlardır:
- keyVersion kullanılacak anahtarın sürümünü belirtir
- keyName , anahtarınızın adıdır
- keyVaultUri , Azure Key Vault'un tekdüzen kaynak tanımlayıcısıdır, örneğin
https://user.vault.azure.net
- Kimlik , kasaya erişimi olan bir yönetilen kimlik belirtir, örneğin
/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool
Kendi şifreleme anahtarınızı kullanarak depolama havuzu oluşturmak için bu adımları izleyin. Bu depolama havuzundan oluşturulan tüm kalıcı birimler aynı anahtar kullanılarak şifrelenir.
Gibi
code acstor-storagepool-cmk.yaml
bir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.Aşağıdaki kodu yapıştırın, gerekli parametreleri sağlayın ve dosyayı kaydedin. Depolama havuzu adı değeri istediğiniz gibi olabilir. skuName için performans ve yedeklilik düzeyini belirtin. Kabul edilebilir değerler Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS ve StandardSSD_ZRS'dır. Depolama için Gi veya Ti'de havuz için depolama kapasitesi miktarını belirtin. CMK şifreleme parametrelerini sağladığından emin olun.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS encryption: { keyVersion: "<key-version>", keyName: "<key-name>", keyVaultUri: "<key-vault-uri>", identity: "<identity>" } resources: requests: storage: 1Ti
Depolama havuzunu oluşturmak için YAML bildirim dosyasını uygulayın.
kubectl apply -f acstor-storagepool-cmk.yaml
Depolama havuzu oluşturma işlemi tamamlandığında aşağıdaki gibi bir ileti görürsünüz:
storagepool.containerstorage.azure.com/azuredisk created
Depolama havuzunun durumunu denetlemek için bu komutu da çalıştırabilirsiniz. değerini depolama havuzu adı değerinizle değiştirin
<storage-pool-name>
. Bu örnekte değer azuredisk olacaktır.kubectl describe sp <storage-pool-name> -n acstor
Depolama havuzu oluşturulduğunda, Azure Container Storage adlandırma kuralını acstor-<storage-pool-name>
kullanarak sizin adınıza bir depolama sınıfı oluşturur.
2. Kullanılabilir depolama sınıflarını görüntüleme
Depolama havuzu kullanıma hazır olduğunda, kalıcı birim talepleri oluştururken ve kalıcı birimleri dağıtırken depolamanın nasıl dinamik olarak oluşturulduğunu tanımlamak için bir depolama sınıfı seçmeniz gerekir.
Kullanılabilir depolama sınıflarını görüntülemek için komutunu çalıştırın kubectl get sc
. adlı acstor-<storage-pool-name>
bir depolama sınıfı görmeniz gerekir.
Önemli
İç olarak işaretlenmiş depolama sınıfını kullanmayın. Bu, Azure Container Storage'ın çalışması için gereken bir iç depolama sınıfıdır.
3. Kalıcı birim talebi oluşturma
Depolama sınıfına göre depolamayı otomatik olarak sağlamak için kalıcı birim talebi (PVC) kullanılır. Yeni depolama sınıfını kullanarak bir PVC oluşturmak için bu adımları izleyin.
Gibi
code acstor-pvc.yaml
bir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.Aşağıdaki kodu yapıştırın ve dosyayı kaydedin. PVC
name
değeri istediğiniz gibi olabilir.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurediskpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk # replace with the name of your storage class if different resources: requests: storage: 100Gi
PVC'yi oluşturmak için YAML bildirim dosyasını uygulayın.
kubectl apply -f acstor-pvc.yaml
Aşağıdakine benzer bir çıktı görmeniz gerekir:
persistentvolumeclaim/azurediskpvc created
Aşağıdaki komutu çalıştırarak PVC'nin durumunu doğrulayabilirsiniz:
kubectl describe pvc azurediskpvc
PVC oluşturulduktan sonra bir pod tarafından kullanılmaya hazır olur.
4. Pod dağıtma ve kalıcı birim ekleme
Karşılaştırma ve iş yükü benzetimi için Fio (Esnek G/Ç TestLeyicisi) kullanarak bir pod oluşturun ve kalıcı birim için bir bağlama yolu belirtin. claimName için, kalıcı birim talebi oluştururken kullandığınız ad değerini kullanın.
Gibi
code acstor-pod.yaml
bir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.Aşağıdaki kodu yapıştırın ve dosyayı kaydedin.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: azurediskpv persistentVolumeClaim: claimName: azurediskpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: azurediskpv
Podu dağıtmak için YAML bildirim dosyasını uygulayın.
kubectl apply -f acstor-pod.yaml
Aşağıdakine benzer bir çıktı görmeniz gerekir:
pod/fiopod created
Pod'un çalışıp çalışmadığını ve kalıcı birim talebin poda başarıyla bağlanıp bağlanmadığını denetleyin:
kubectl describe pod fiopod kubectl describe pvc azurediskpvc
Geçerli durumunu görmek için fio testini denetleyin:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
Depolama alanı olarak Azure Diskleri kullanan bir pod dağıttınız ve bunu Kubernetes iş yükleriniz için kullanabilirsiniz.
Kalıcı birimleri ve depolama havuzlarını yönetme
Artık kalıcı bir birim oluşturduğunuza göre, gerektiğinde birimi ayırabilir ve yeniden takabilirsiniz. Ayrıca depolama havuzunu genişletebilir veya silebilirsiniz.
Kalıcı birimi ayırma ve yeniden ekleme
Kalıcı bir birimi ayırmak için, kalıcı birimin bağlı olduğu podu silin. yerine podun adını (örneğin fiopod) yazın<pod-name>
.
kubectl delete pods <pod-name>
Kalıcı bir birimi yeniden eklemek için, pod dağıtma ve kalıcı birim ekleme bölümünde açıklandığı gibi YAML bildirim dosyasındaki kalıcı birim talep adına başvurmanız yeterlidir.
Kalıcı birim talebin hangi kalıcı birime bağlı olduğunu denetlemek için komutunu çalıştırın kubectl get pvc <persistent-volume-claim-name>
.
Depolama havuzunu genişletme
Azure Diskler tarafından yedeklenen depolama havuzlarını genişleterek ölçeği hızla ve kapalı kalma süresi olmadan artırabilirsiniz. Depolama havuzlarının küçültülmesi şu anda desteklenmiyor. Depolama havuzu genişletmesi Ultra Diskler veya Premium SSD v2 için desteklenmez.
Not
Depolama havuzunu genişletmek, Azure Container Storage ve Azure Diskleri maliyetlerinizi artırabilir. Bkz. Azure Container Storage fiyatlandırma sayfası ve Azure Container Storage faturalamasını anlama.
Şu anda , , Standard_LRS
, StandardSSD_LRS
Premium_ZRS
, ve StandardSSD_ZRS
SKU'ları kullanılırken Premium_LRS
depolama havuzu genişletmesi aşağıdaki sınırlamalara sahiptir:
- Mevcut depolama havuzunuz 4 TiB'den (4.096 GiB) küçükse, yalnızca 4.095 GiB'ye kadar genişletebilirsiniz. Hataları önlemek için, başlangıçta 4 TiB'den (4.096 GiB) küçükse geçerli depolama havuzunuzu 4.095 GiB'nin ötesine genişletmeyi denemeyin. 4 TiB depolama havuzları > , kullanılabilir maksimum depolama kapasitesine kadar genişletilebilir.
Azure Diskler için mevcut bir depolama havuzunu genişletmek için bu yönergeleri izleyin.
Bir metin düzenleyicisi kullanarak, depolama havuzunu oluşturmak için kullandığınız YAML bildirim dosyasını açın, örneğin
code acstor-storagepool.yaml
.YAML bildirim dosyasında belirtilen depolama girdisini istenen değerle değiştirin. Bu değer, depolama havuzunun geçerli kapasitesinden büyük olmalıdır. Örneğin, belirtim olarak ayarlandıysa
storage: 1Ti
olarak değiştirinstorage: 2Ti
. Önceden sağlanan bir depolama havuzu oluşturduysanız, depolama havuzu kapasite boyutunu önceden sağlanan Azure Disklerinden devraldığından depolama girişi olmaz. YAML'de bir depolama girişi görmüyorsanız, istenen depolama kapasitesini belirten aşağıdaki kodu ekleyin ve bildirim dosyasını kaydedin:spec: resources: requests: storage: 2Ti
Not
Depolama havuzunda her biri 1 TiB kapasiteli iki disk varsa ve YAML bildirim dosyasını okuyacak storage: 4Ti
şekilde düzenlerseniz, YAML uygulandığında her iki disk de 2 TiB'ye genişletilir ve size toplam 4 TiB'lık yeni bir kapasite sağlar.
Depolama havuzunu genişletmek için YAML bildirim dosyasını uygulayın.
kubectl apply -f acstor-storagepool.yaml
Depolama havuzunun durumunu denetlemek için bu komutu çalıştırın. değerini depolama havuzu adı değerinizle değiştirin
<storage-pool-name>
.kubectl describe sp <storage-pool-name> -n acstor
"Depolama havuzu genişliyor" gibi bir ileti görmeniz gerekir. Birkaç dakika sonra komutu yeniden çalıştırın ve iletinin gitmiş olması gerekir.
Çalıştır
kubectl get sp -A
ve depolama havuzu yeni boyutu yansıtmalıdır.
Depolama havuzunu silme
Depolama havuzunu silmek istiyorsanız aşağıdaki komutu çalıştırın. değerini depolama havuzu adıyla değiştirin <storage-pool-name>
.
kubectl delete sp -n acstor <storage-pool-name>