Aracılığıyla paylaş


Azure Container Depolama Preview'ı Azure yönetilen disklerle kullanma

Azure Container Depolama, 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 Depolama'ı Kubernetes iş yükleriniz için arka uç depolama alanı olarak Azure yönetilen diskleri kullanacak şekilde nasıl yapılandırabileceğiniz 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 Depolama henüz yüklemediyseniz Azure Container Depolama yükleme başlığındaki yönergeleri izleyin.

  • Hedef bölgenizin Azure Container Depolama bölgelerinde desteklenip desteklenmediğini denetleyin.

Not

Azure Container Depolama'ı 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.

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.

veya az aks update komutlarını kullanarak az aks create Azure Container Depolama 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 bölümü atlayabilir ve Kullanılabilir depolama sınıflarını görüntüleme bölümüne geçebilirsiniz.

Azure Diskler için bir depolama havuzu oluşturmak için bu adımları izleyin. Aşağıdakileri de yapabilirsiniz:

  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. Dosyayı kaydedin.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: azuredisk
      namespace: acstor
    spec:
      poolType:
        azureDisk:
          skuName: Premium_LRS
      resources:
        requests:
          storage: 1Ti
    
  3. 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/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 Depolama 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.

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. Azure Container Depolama'nin çalışması için gereken bir iç depolama sınıfıdır.

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.

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.

Ö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> Özellikler'i 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 Depolama 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.

Müşteri tarafından yönetilen anahtarlarla sunucu tarafı şifrelemeyi etkinleştirme

Zaten bir depolama havuzu oluşturduysanız veya varsayılan Microsoft tarafından yönetilen şifreleme anahtarlarını kullanmayı tercih ediyorsanız, bu bölümü atlayın ve Kullanılabilir depolama sınıflarını görüntüleme bölümüne geçin.

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, azure disk depolama havuzundan oluşturacağınız kalıcı birimleri şifrelemek için müşteri tarafından yönetilen anahtarlar (CMK) sağlayabilirsiniz.

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 Depolama adlandırma kuralını acstor-<storage-pool-name>kullanarak sizin adınıza bir depolama sınıfı oluşturur.

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.

Not

Depolama havuzunu genişletmek, Azure Container Depolama ve Azure Diskleri maliyetlerinizi artırabilir. Azure Container Depolama fiyatlandırma sayfasına bakın.

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
    
  3. Depolama havuzunu genişletmek için YAML bildirim dosyasını uygulayın.

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

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