Azure Kubernetes Service üzerinde Azure ultra diskleri kullanma

Azure ultra diskleri durum bilgisi olan uygulamalarınız için yüksek aktarım hızına, yüksek IOPS'ye ve tutarlı olarak düşük gecikme süresine sahip disk depolaması getirir. Ultra disklerin önemli avantajlarından biri aracı düğümlerinizi yeniden başlatmanıza gerek kalmadan SSD'nin ve iş yüklerinizin performansını dinamik olarak değiştirebilme özelliğidir. Ultra diskler yoğun veri gerektiren iş yüklerine uygundur.

Bu makalede, Azure ultra disklerini kullanmak için yeni veya mevcut bir AKS kümesinin nasıl yapılandırıldığı açıklanır.

Başlamadan önce

Bu özellik yalnızca küme oluşturma sırasında veya düğüm havuzu oluşturulurken ayarlanabilir.

Sınırlamalar

  • Azure ultra diskler, kullanılabilirlik alanlarına ve bu diskleri destekleyen bölgelere dağıtılan düğüm havuzlarını gerektirir ve yalnızca belirli VM serileri tarafından desteklenir. Daha fazla bilgi için Ultra disk sınırlamaları bölümündeki ilgili tabloyu gözden geçirin.
  • Ultra diskler kullanılabilirlik kümeleri veya Azure Disk Şifrelemesi gibi bazı özellikler ve işlevlerle kullanılamaz. En son bilgiler için Ultra disk sınırlamalarını gözden geçirin.

Ultra diskler kullanabilen bir küme oluşturma

Aşağıdaki CLI komutlarını kullanarak Azure ultra Disklerden yararlanabilen bir AKS kümesi oluşturun. --enable-ultra-ssd Özelliği ayarlamak için parametresini EnableUltraSSD kullanın.

az aks create -g MyResourceGroup -n myAKSCluster -l westus2 --node-vm-size Standard_D2s_v3 --zones 1 2 --node-count 2 --enable-ultra-ssd

Ultra disk desteği olmadan bir küme oluşturmak istiyorsanız, parametresini --enable-ultra-ssd atlayarak bunu yapabilirsiniz.

Mevcut kümede ultra diskleri etkinleştirme

Mevcut bir kümede ultra diskleri destekleyen yeni bir düğüm havuzu ekleyerek ultra diskleri etkinleştirebilirsiniz. komutuyla az aks nodepool add parametresini kullanarak --enable-ultra-ssd ultra diskleri kullanmak için yeni bir düğüm havuzu yapılandırın.

Ultra disk desteği olmadan yeni düğüm havuzları oluşturmak istiyorsanız, parametresini --enable-ultra-ssd dışlayarak bunu yapabilirsiniz.

Bir depolama sınıfıyla ultra diskleri dinamik olarak kullanma

Dağıtımlarınızda veya durum bilgisi olan kümelerde ultra diskleri kullanmak için dinamik sağlama için bir depolama sınıfı kullanabilirsiniz.

Depolama sınıfını oluşturma

Depolama sınıfı, bir depolama biriminin kalıcı bir birimle dinamik olarak nasıl oluşturulduğunu tanımlamak için kullanılır. Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz. Kubernetes depolama sınıfları. Bu örnekte ultra disklere başvuran bir depolama sınıfı oluşturacağız.

  1. Adlı bir dosya azure-ultra-disk-sc.yaml oluşturun ve aşağıdaki bildirimde kopyalayın:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: ultra-disk-sc
    provisioner: disk.csi.azure.com # replace with "kubernetes.io/azure-disk" if aks version is less than 1.21
    volumeBindingMode: WaitForFirstConsumer # optional, but recommended if you want to wait until the pod that will use this disk is created 
    parameters:
      skuname: UltraSSD_LRS
      kind: managed
      cachingMode: None
      diskIopsReadWrite: "2000"  # minimum value: 2 IOPS/GiB 
      diskMbpsReadWrite: "320"   # minimum value: 0.032/GiB
    
  2. komutunu kullanarak depolama sınıfını kubectl apply oluşturun ve dosyanızı azure-ultra-disk-sc.yaml belirtin.

    kubectl apply -f azure-ultra-disk-sc.yaml
    

    Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

    storageclass.storage.k8s.io/ultra-disk-sc created
    

Kalıcı birim talebi oluşturma

Depolama sınıfını temel alan depolamayı otomatik olarak sağlamak için kalıcı birim talebi (PVC) kullanılır. Bu durumda, bir PVC ultra disk oluşturmak için önceden oluşturulmuş depolama sınıfını kullanabilir.

  1. Adlı bir dosya azure-ultra-disk-pvc.yaml oluşturun ve aşağıdaki bildirimde kopyalayın:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ultra-disk
    spec:
      accessModes:
     - ReadWriteOnce
      storageClassName: ultra-disk-sc
      resources:
        requests:
          storage: 1000Gi
    

    Talep, ReadWriteOnce erişimiyle boyutu 1000 GB olan adlı ultra-disk bir disk talep eder. Ultra-disk-sc depolama sınıfı depolama sınıfı olarak belirtilir.

  2. komutunu kullanarak kubectl apply kalıcı birim talebi oluşturun ve dosyanızı azure-ultra-disk-pvc.yaml belirtin.

    kubectl apply -f azure-ultra-disk-pvc.yaml
    

    Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

    persistentvolumeclaim/ultra-disk created
    

Kalıcı birimi kullanma

Kalıcı birim talebi oluşturulduktan ve disk başarıyla sağlandıktan sonra, diske erişim ile bir pod oluşturulabilir. Aşağıdaki bildirim, Azure diskini yoluna /mnt/azurebağlamak için ultra-disk adlı kalıcı birim talebi kullanan temel bir NGINX podu oluşturur.

  1. Adlı bir dosya nginx-ultra.yaml oluşturun ve aşağıdaki bildirimde kopyalayın:

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-ultra
    spec:
      containers:
     - name: nginx-ultra
        image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/azure"
          name: volume
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: ultra-disk
    
  2. komutunu kullanarak kubectl apply pod'u oluşturun ve dosyanızı nginx-ultra.yaml belirtin.

    kubectl apply -f nginx-ultra.yaml
    

    Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

    pod/nginx-ultra created
    

    Artık azure diskinizin dizinine bağlı olduğu çalışan bir podunuz /mnt/azure var.

  3. komutunu kullanarak kubectl describe pod yapılandırma ayrıntılarınıza bakın ve dosyanızı nginx-ultra.yaml belirtin.

    kubectl describe pod nginx-ultra
    

    Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  azure-managed-disk
        ReadOnly:   false
      default-token-smm2n:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-smm2n
        Optional:    false
    [...]
    Events:
      Type    Reason                 Age   From                               Message
      ----    ------                 ----  ----                               -------
      Normal  Scheduled              2m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-79590246-0
      Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-smm2n"
      Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242"
    [...]
    

Sonraki adımlar