Azure Kapsayıcı Depolama'yı geçici SSD ile 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 geçici SSD ile Kısa Ömürlü Disk kullanacak şekilde yapılandırma adımları gösterilmektedir. Sonunda, depolama alanı olarak geçici SSD kullanan bir pod olacak.

Kısa Ömürlü Disk nedir?

Uygulamanızın milisaniyenin altında depolama gecikme süresine ihtiyacı olduğunda ve veri dayanıklılığı gerektirmediğinde, performans gereksinimlerinizi karşılamak için Azure Container Storage ile Kısa Ömürlü Disk'i kullanabilirsiniz. Kısa ömürlü, disklerin AKS kümesini barındıran yerel sanal makineye (VM) dağıtıldığını ve Azure depolama hizmetine kaydedilmediğini gösterir. VM'nizi durdurur/serbest bırakırsanız bu disklerdeki veriler kaybolur.

İki tür Kısa Ömürlü Disk kullanılabilir: yerel NVMe ve geçici SSD. NVMe, depolama ve CPU arasında yüksek hızlı veri aktarımı için tasarlanmıştır. Uygulamanızın geçici SSD'den daha yüksek IOPS veya aktarım hızına ihtiyacı olduğunda veya daha fazla depolama alanı gerektirdiğinde NVMe'yi seçin. Azure Container Storage'ın yalnızca yerel NVMe için zaman uyumlu veri çoğaltmayı desteklediğini unutmayın.

Bu disklerin kısa ömürlü yapısı nedeniyle Azure Container Storage, kısa ömürlü disk kullanırken varsayılan olarak genel kısa ömürlü birimlerin kullanımını destekler. Ancak bazı kullanım örnekleri, veriler dayanıklı olmasa bile kalıcı birimleri çağırabilir; örneğin, kalıcı birimleri kullanmak için sabit kodlanmış mevcut YAML dosyalarını veya dağıtım şablonlarını kullanmak istiyorsanız ve iş yükünüz dayanıklılık için uygulama düzeyinde çoğaltmayı destekliyorsa. Bu gibi durumlarda Azure Container Storage yüklemenizi güncelleştirebilir ve kısa ömürlü disk depolama havuzlarından kalıcı birimlerin oluşturulmasını desteklemek için ek açıklamayı acstor.azure.com/accept-ephemeral-storage=true kalıcı birim talep tanımınıza ekleyebilirsiniz.

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

Geçici SSD'yi destekleyen bir VM türü seçin

Kısa Ömürlü Disk yalnızca belirli vm türlerinde kullanılabilir. Ev3 ve Esv3 serisi VM gibi geçici SSD'ye sahip bir VM türü seçtiğinizden emin olun.

Düğüm havuzunuzda kullanılan VM türünü almak için aşağıdaki komutu çalıştırın. ve <cluster name> değerlerini kendi değerlerinizle değiştirin<resource group>. veya VmSizeiçin PoolName değer sağlamanız gerekmez, bu nedenle sorguyu burada gösterildiği gibi tutun.

az aks nodepool list --resource-group <resource group> --cluster-name <cluster name> --query "[].{PoolName:name, VmSize:vmSize}" -o table

Aşağıda bir çıkış örneği verilmiştir.

PoolName    VmSize
----------  ---------------
nodepool1   standard_l8s_v3

Her VM'nin en az dört sanal CPU'su (vCPU) ve her düğüm havuzunun en az üç düğümü olması önerilir.

Genel kısa ömürlü birimler oluşturma ve ekleme

Genel kısa ömürlü 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.

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 bölümü atlayabilir ve Kullanılabilir depolama sınıflarını görüntüleme bölümüne geçebilirsiniz.

Geçici SSD kullanarak 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 ve dosyayı kaydedin. Depolama havuzu adı değeri istediğiniz gibi olabilir.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: ephemeraldisk-temp
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk:
          diskType: temp
    
  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/ephemeraldisk-temp 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 ephemeraldisk-temp 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.

$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal   disk.csi.azure.com               Retain          WaitForFirstConsumer   true                   65m
acstor-ephemeraldisk-temp        containerstorage.csi.azure.com   Delete          WaitForFirstConsumer   true                   2m27s

Ö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. Genel kısa ömürlü birimi olan bir pod dağıtma

Genel kısa ömürlü birim kullanan karşılaştırma ve iş yükü benzetimi için Fio (Esnek G/Ç TestLeyicisi) kullanarak bir pod oluşturun.

  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
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: acstor-ephemeraldisk-temp # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    

    Birimlerinizin depolama boyutunu değiştirdiğinizde, boyutun tek bir düğümün geçici diskinin kullanılabilir kapasitesinden küçük olduğundan emin olun. Bkz. Düğüm geçici disk kapasitesini denetleme.

  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 kısa ömürlü birim talebin poda başarıyla bağlanıp bağlanmadığını denetleyin:

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    
  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 geçici SSD kullanan bir pod dağıttınız ve bunu Kubernetes iş yükleriniz için kullanabilirsiniz.

Kalıcı birimler oluşturma ve ekleme

Kısa ömürlü disk depolama havuzundan kalıcı birim oluşturmak için, veriler kısa ömürlü olsa bile kalıcı birimleri kullanmayı amaçladığınızdan emin olmak için koruma olarak kalıcı birim taleplerinize (PVC' ler) bir ek açıklama eklemeniz gerekir. Ayrıca, kalıcı birim taleplerinizi oluşturmadan önce kümenizdeki değerle PersistentVolumeWithAnnotation bayrağını etkinleştirmeniz --ephemeral-disk-volume-type gerekir.

Kalıcı birim oluşturmak ve eklemek için bu adımları izleyin.

1. Azure Container Storage yüklemenizi güncelleştirme

Kısa ömürlü disk depolama havuzlarından kalıcı birimler oluşturulmasına izin vermek üzere Azure Container Storage yüklemenizi güncelleştirmek için aşağıdaki komutu çalıştırın.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage ephemeralDisk --storage-pool-option Temp --ephemeral-disk-volume-type PersistentVolumeWithAnnotation 

2. Depolama havuzu oluşturma

Kubernetes kümeniz için mantıksal bir depolama grubu olan depolama havuzunu yaML bildirim dosyasında tanımlayarak oluşturun.

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 bölümü atlayabilir ve Kullanılabilir depolama sınıflarını görüntüleme bölümüne geçebilirsiniz.

Geçici SSD kullanarak 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 ve dosyayı kaydedin. Depolama havuzu adı değeri istediğiniz gibi olabilir.

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: ephemeraldisk-temp
      namespace: acstor
    spec:
      poolType:
        ephemeralDisk:
          diskType: temp
    
  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/ephemeraldisk-temp 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 ephemeraldisk-temp 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.

3. Kullanılabilir depolama sınıflarını görüntüleme

Depolama havuzu kullanıma hazır olduğunda, birimleri oluştururken ve 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.

$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal   disk.csi.azure.com               Retain          WaitForFirstConsumer   true                   65m
acstor-ephemeraldisk-temp        containerstorage.csi.azure.com   Delete          WaitForFirstConsumer   true                   2m27s

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

4. Kalıcı birim talebi oluşturma

Kalıcı birim talebi, depolama sınıfına göre depolamayı otomatik olarak sağlamak için 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: ephemeralpvc
      annotations:
        acstor.azure.com/accept-ephemeral-storage: "true"
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-ephemeraldisk-temp # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    

    Birimlerinizin depolama boyutunu değiştirdiğinizde, boyutun tek bir düğümün kısa ömürlü diskinin kullanılabilir kapasitesinden küçük olduğundan emin olun. Bkz. Düğüm geçici disk kapasitesini denetleme.

  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/ephemeralpvc created
    

    Aşağıdaki komutu çalıştırarak PVC'nin durumunu doğrulayabilirsiniz:

    kubectl describe pvc ephemeralpvc
    

PVC oluşturulduktan sonra bir pod tarafından kullanılmaya hazır olur.

5. 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: ephemeralpv
          persistentVolumeClaim:
            claimName: ephemeralpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralpv
    
  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 ephemeralpvc
    
  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
    

Şimdi geçici SSD kullanan bir pod dağıttınız ve bunu Kubernetes iş yükleriniz için kullanabilirsiniz.

Birimleri ve depolama havuzlarını yönetme

Bu bölümde, tek bir düğüm için kısa ömürlü diskin kullanılabilir kapasitesini denetlemeyi ve depolama havuzunu genişletmeyi veya silmeyi öğreneceksiniz.

Düğüm geçici disk kapasitesini denetleme

Kısa ömürlü birim tek bir düğümde ayrılır. Kısa ömürlü birimlerinizin boyutunu yapılandırdığınızda, boyut tek düğümün geçici diskinin kullanılabilir kapasitesinden küçük olmalıdır.

Tek bir düğüm için geçici diskin kullanılabilir kapasitesini denetlemek için aşağıdaki komutu çalıştırın.

$ kubectl get diskpool -n acstor
NAME                                CAPACITY      AVAILABLE     USED        RESERVED    READY   AGE
ephemeraldisk-temp-diskpool-jaxwb   75660001280   75031990272   628011008   560902144   True    21h
ephemeraldisk-temp-diskpool-wzixx   75660001280   75031990272   628011008   560902144   True    21h
ephemeraldisk-temp-diskpool-xbtlj   75660001280   75031990272   628011008   560902144   True    21h

Bu örnekte, tek bir düğüm için kullanılabilir geçici disk kapasitesi bayt veya 69 GiB'dir 75031990272 .

Depolama havuzunu genişletme

Geçici SSD ile yedeklenen depolama havuzlarını genişleterek ölçeği hızlı ve kapalı kalma süresi olmadan artırabilirsiniz. Depolama havuzlarının küçültülmesi şu anda desteklenmiyor.

Kısa Ömürlü Disk tarafından yedeklenen bir depolama havuzu AKS kümesi düğümlerinde (VM' ler) yerel depolama kaynaklarını kullandığından, depolama havuzunu genişletmek için kümeye başka bir düğüm eklenmesi gerekir. Depolama havuzunu genişletmek için bu yönergeleri izleyin.

  1. AKS kümesine düğüm eklemek için aşağıdaki komutu çalıştırın. <cluster-name>, <nodepool name> ve <resource-group-name> değerleini kendi değerlerinizle değiştirin. Düğüm havuzunuzun adını almak için komutunu çalıştırın kubectl get nodes.

    az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
    
  2. komutunu çalıştırdığınızda kubectl get nodes kümeye bir düğüm eklendiğini görürsünüz.

  3. komutunu çalıştırdığınızda kubectl get sp -A depolama havuzunun kapasitesinin arttığını görmeniz gerekir.

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.