Aracılığıyla paylaş


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ırarak az 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.

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:

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.

  1. Gibi code acstor-storagepool.yamlbir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.

  2. 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 ve MBpsReadWrite 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
    
  3. 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.

  1. Azure Portal’ında oturum açın.

  2. 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.

  3. Gibi code acstor-storagepool.yamlbir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.

  4. 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>
    
  5. 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.

  1. Gibi code acstor-storagepool-cmk.yamlbir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.

  2. 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
    
  3. 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.

  1. Gibi code acstor-pvc.yamlbir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.

  2. 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
    
  3. 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.

  1. Gibi code acstor-pod.yamlbir YAML bildirim dosyası oluşturmak için sık kullandığınız metin düzenleyiciyi kullanın.

  2. 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
    
  3. 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
    
  4. 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
    
  5. 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_LRSPremium_ZRS, ve StandardSSD_ZRS SKU'ları kullanılırken Premium_LRSdepolama 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.

  1. 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.

  2. 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: 1Tiolarak değiştirin storage: 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.

  1. Depolama havuzunu genişletmek için YAML bildirim dosyasını uygulayın.

    kubectl apply -f acstor-storagepool.yaml 
    
  2. 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.

  3. Ç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>

Ayrıca bkz.