Azure Kubernetes Service'te (AKS) Azure Diskleriyle birim oluşturma ve kullanma

Kalıcı birim, Kubernetes podlarıyla kullanılmak üzere sağlanan bir depolama parçasını temsil eder. Kalıcı birimi bir veya birden çok pod ile kullanabilir ve bunu dinamik veya statik olarak sağlayabilirsiniz. Bu makalede, Azure Kubernetes Service (AKS) kümesinde Azure Diskleri ile dinamik olarak kalıcı birimler oluşturma adımları gösterilmektedir.

Not

Azure diski yalnızca ReadWriteOnce erişim modu türüyle bağlanabilir ve bu da AKS'deki bir düğümün kullanımına sunulmasını sağlar. Bu erişim modu, podlar aynı düğümde çalıştırıldığında birden çok pod'un birime erişmesine izin verir. Daha fazla bilgi için bkz . Kubernetes PersistentVolume erişim modları.

Bu makalede aşağıdaki işlemler hakkında bilgi edinirsiniz:

  • Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü yükleyerek ve bir pod'a eklemek için dinamik olarak bir veya daha fazla Azure yönetilen diski oluşturarak dinamik kalıcı birim (PV) ile çalışın.
  • Bir veya daha fazla Azure yönetilen diski oluşturarak veya var olan bir diski kullanıp poda ekleyerek statik pv ile çalışın.

Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için Depolama seçenekleri.

Başlamadan önce

  • Azure CLI sürüm 2.0.59 veya üzerinin yüklü ve yapılandırılmış olduğundan emin olun. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

  • Azure Disk CSI sürücüsünün düğüm başına birim sınırı vardır. Birim sayısı, düğüm/düğüm havuzunun boyutuna göre değişir. Düğüm başına ayrılabilecek birim sayısını belirlemek için kubectl get komutunu çalıştırın:

    kubectl get CSINode <nodename> -o yaml
    

Birimi dinamik olarak sağlama

Bu bölüm, bir iş yükü tarafından kullanılmak üzere Azure Disk depolama ayrıntılarını içeren bir veya daha fazla kalıcı birim sağlamak isteyen küme yöneticileri için rehberlik sağlar. Kalıcı birim talebi (PVC), bir Azure Disk depolama kapsayıcısını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır.

Dinamik PersistentVolumes için sınıf parametrelerini Depolama

Aşağıdaki tabloda, PersistentVolumeClaim'iniz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreler yer alır.

Veri Akışı Adı Anlamı Kullanılabilir Değer Zorunlu Default value
skuName Azure Disks depolama hesabı türü (diğer ad: storageAccountType) Standard_LRS, Premium_LRS, StandardSSD_LRS, , PremiumV2_LRS, UltraSSD_LRS, Premium_ZRS, StandardSSD_ZRS Hayır StandardSSD_LRS
fsType Dosya Sistemi Türü ext4, ext3, ext2, xfs, , btrfs Linux için, ntfs Windows için Hayır ext4 Linux için, ntfs Windows için
cachingMode Azure Veri Diski Ana Bilgisayarı Önbellek Ayarı None, ReadOnly, ReadWrite Hayır ReadOnly
resourceGroup Azure Diskleri için kaynak grubunu belirtme Mevcut kaynak grubu adı Hayır Sürücü boşsa geçerli AKS kümesiyle aynı kaynak grubu adını kullanır
DiskIOPSReadWrite UltraSSD disk veya Premium SSD v2 IOPS Özelliği (en az: 2 IOPS/GiB) 100~160000 Hayır 500
DiskMBpsReadWrite UltraSSD disk veya Premium SSD v2 Aktarım Hızı Özelliği (en az: 0,032/GiB) 1~2000 Hayır 100
LogicalSectorSize Ultra disk için bayt cinsinden mantıksal kesim boyutu. Desteklenen değerler 512 ad 4096'dır. Varsayılan değer 4096'dır. 512, 4096 Hayır 4096
tags Azure Disk etiketleri Etiket biçimi: key1=val1,key2=val2 Hayır ""
diskEncryptionSetID Bekleyen şifrelemeyi etkinleştirmek için kullanılacak disk şifreleme kümesinin ResourceId değeri Biçim: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} Hayır ""
diskEncryptionType Disk şifreleme kümesinin şifreleme türü. EncryptionAtRestWithCustomerKey(varsayılan olarak), EncryptionAtRestWithPlatformAndCustomerKeys Hayır ""
writeAcceleratorEnabled Azure Disklerde Yazma Hızlandırıcısı true, false Hayır ""
networkAccessPolicy Disk veya anlık görüntü için SAS URI'sinin oluşturulmasını önlemek için NetworkAccessPolicy özelliği AllowAll, DenyAll, AllowPrivate Hayır AllowAll
diskAccessID Disklerde özel uç noktaları kullanmak için DiskAccess kaynağının Azure Kaynak Kimliği Hayır ``
enableBursting diskin sağlanan performans hedefinin ötesinde isteğe bağlı ani artışa olanak tanıyın. İsteğe bağlı seri artış yalnızca Premium diske ve disk boyutu > 512 GB olduğunda uygulanmalıdır. Ultra ve paylaşılan disk desteklenmez. Seri artış varsayılan olarak devre dışıdır. true, false Hayır false
Useragent Müşteri kullanımı ilişkilendirmesi için kullanılan kullanıcı aracısı Hayır Oluşturulan Useragent biçimlendirilmiş driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Azure Disklerinin oluşturulduğu Azure abonelik kimliğini belirtin. Azure abonelik kimliği Hayır Boş değilse sağlanmalıdır resourceGroup .
--- Aşağıdaki parametreler yalnızca v2 için geçerlidir --- --- ---
maxShares Disk için izin verilen toplam paylaşılan disk bağlama sayısı. Değerin 2 veya daha fazla olarak ayarlanması ek çoğaltmalarını etkinleştirir. Desteklenen değerler disk boyutuna bağlıdır. Desteklenen değerler için bkz . Azure yönetilen diski paylaşma. Hayır 1
maxMountReplicaCount Korunacak çoğaltma eklerinin sayısı. Bu değer aralıkta olmalıdır [0..(maxShares - 1)] Hayır ise accessModeReadWriteMany, varsayılan değer olur 0. Aksi takdirde, varsayılan değer maxShares - 1

Yerleşik depolama sınıfları

Depolama sınıfları, bir depolama biriminin kalıcı bir birimle dinamik olarak nasıl oluşturulduğunu tanımlar. Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz . Kubernetes depolama sınıfları.

Her AKS kümesi, ikisi Azure Disklerle çalışacak şekilde yapılandırılmış dört önceden oluşturulmuş depolama sınıfı içerir:

  1. Varsayılan depolama sınıfı standart bir SSD Azure Disk sağlar.
    • Standart SSD'ler Standart depolamayı yedekler ve güvenilir performans sunarken uygun maliyetli depolama sunar.
  2. managed-csi-premium depolama sınıfı bir premium Azure Disk sağlar.
    • SSD tabanlı yüksek performanslı, düşük gecikme süreli diskler Premium diskleri geri alır. Üretim iş yüklerini çalıştıran VM'ler için idealdir. AKS üzerinde Azure Disk CSI sürücüsünü kullandığınızda, Standart SSD yerel olarak yedekli depolama (LRS) tarafından yedeklenen depolama sınıfını da kullanabilirsiniz managed-csi .

Veri kaybı riski nedeniyle PVC boyutunun küçültülmesi desteklenmez. komutunu kullanarak mevcut bir depolama sınıfını kubectl edit sc düzenleyebilir veya kendi özel depolama sınıfınızı oluşturabilirsiniz. Örneğin, 4 TiB boyutunda bir disk kullanmak istiyorsanız, disk önbelleğe alma 4 TiB ve daha büyük diskler için desteklenmediğinden tanımlayan cachingmode: None bir depolama sınıfı oluşturmanız gerekir. Depolama sınıfları ve kendi depolama sınıfınızı oluşturma hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için Depolama seçenekleri.

komutunu kullanarak önceden oluşturulmuş depolama sınıflarını kubectl get sc görebilirsiniz. Aşağıdaki örnekte, AKS kümesinde kullanılabilen önceden oluşturulmuş depolama sınıfları gösterilmektedir:

kubectl get sc

Komutun çıkışı aşağıdaki örneğe benzer:

NAME                PROVISIONER                AGE
default (default)   disk.csi.azure.com         1h
managed-csi         disk.csi.azure.com         1h

Not

Kalıcı birim talepleri GiB'de belirtilir, ancak Azure yönetilen diskleri SKU tarafından belirli bir boyut için faturalandırılır. Bu SKU'lar S4 veya P4 diskleri için 32GiB ile S80 veya P80 diskler için 32TiB arasında değişir (önizlemede). Premium yönetilen diskin aktarım hızı ve IOPS performansı, AKS kümesindeki düğümlerin hem SKU hem de örnek boyutuna bağlıdır. Daha fazla bilgi için bkz . Yönetilen disklerin fiyatlandırması ve performansı.

Kalıcı birim talebi oluşturma

Kalıcı birim talebi (PVC), depolama sınıfına göre depolamayı otomatik olarak sağlar. Bu durumda PVC, standart veya premium Azure yönetilen diski oluşturmak için önceden oluşturulmuş depolama sınıflarından birini kullanabilir.

  1. adlı azure-pvc.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Talep, ReadWriteOnce erişimiyle boyutu 5 GB olan adlı azure-managed-diskbir disk talep eder. Managed-csi depolama sınıfı, depolama sınıfı olarak belirtilir.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
        name: azure-managed-disk
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: managed-csi
      resources:
        requests:
          storage: 5Gi
    

İpucu

Premium depolama kullanan bir disk oluşturmak için managed-csi yerine kullanınstorageClassName: managed-csi-premium.

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

    kubectl apply -f azure-pvc.yaml
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    persistentvolumeclaim/azure-managed-disk created
    

Kalıcı birimi kullanma

Kalıcı birim talebi oluşturduktan sonra, durumunun Pendingolduğunu doğrulamanız gerekir. Durum, Pending pod tarafından kullanılmaya hazır olduğunu gösterir.

  1. komutunu kullanarak kubectl describe pvc PVC'nin durumunu doğrulayın.

    kubectl describe pvc azure-managed-disk
    

    Komutun çıktısı aşağıdaki sıkıştırılmış örneğe benzer:

    Name:            azure-managed-disk
    Namespace:       default
    StorageClass:    managed-csi
    Status:          Pending
    [...]
    
  2. adlı azure-pvc-disk.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Bu bildirim, yoluna /mnt/azureAzure Disk'i bağlamak için azure-managed-disk adlı kalıcı birim talebi kullanan temel bir NGINX pod oluşturur. Windows Server kapsayıcıları için, 'D:' gibi Windows yol kuralını kullanarak bir mountPath belirtin.

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
        - name: mypod
          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
              readOnly: false
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-managed-disk
    
  3. komutunu kullanarak pod oluşturun kubectl apply .

     kubectl apply -f azure-pvc-disk.yaml
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    pod/mypod created
    
  4. Artık azure diskinizin dizine /mnt/azure bağlı olduğu çalışan bir podunuz var. komutunu kullanarak kubectl describe pod yapılandırmasını denetleyin.

     kubectl describe pod mypod
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    [...]
    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"
    [...]
    

Azure ultra disklerini kullanma

Azure ultra disk kullanmak için bkz . Azure Kubernetes Service'te (AKS) ultra diskleri kullanma.

Azure etiketlerini kullanma

Azure etiketlerini kullanma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) Azure etiketlerini kullanma.

Birimi statik olarak sağlama

Bu bölümde, iş yükü tarafından kullanılmak üzere Azure Disklerinin ayrıntılarını içeren bir veya daha fazla kalıcı birim oluşturmak isteyen küme yöneticilerine yönelik yönergeler sağlanır.

Kalıcı birim için statik sağlama parametreleri

Aşağıdaki tablo, kalıcı birim tanımlamak için kullanabileceğiniz parametreleri içerir.

Veri Akışı Adı Anlamı Kullanılabilir Değer Zorunlu Default value
volumeHandle Azure disk URI'si /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} Yes Yok
volumeAttributes.fsType Dosya sistemi türü ext4, ext3, ext2, xfs, , btrfs Linux için, ntfs Windows için Hayır ext4 Linux için, ntfs Windows için
volumeAttributes.partition Mevcut diskin bölüm numarası (yalnızca Linux'ta desteklenir) 1, 2, 3 Hayır Boş (bölüm yok)
- Bölüm biçiminin -part1
volumeAttributes.cachingMode Disk ana bilgisayar önbelleği ayarı None, ReadOnly, ReadWrite Hayır ReadOnly

Azure diski oluşturma

AKS ile kullanmak üzere bir Azure diski oluşturduğunuzda, düğüm kaynak grubunda disk kaynağını oluşturabilirsiniz. Bu yaklaşım AKS kümesinin disk kaynağına erişmesine ve bunları yönetmesine olanak tanır. Bunun yerine diski ayrı bir kaynak grubunda oluşturursanız, kümeniz Contributor için Azure Kubernetes Service (AKS) yönetilen kimliğine rolü diskin kaynak grubuna vermelisiniz.

  1. komutunu kullanarak az aks show kaynak grubu adını belirleyin ve parametresini --query nodeResourceGroup ekleyin.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. komutunu kullanarak az disk create bir disk oluşturun. Düğüm kaynak grubu adını ve disk kaynağı için myAKSDisk gibi bir ad belirtin. Aşağıdaki örnek 20GiB'lik bir disk oluşturur ve oluşturulduktan sonra diskin kimliğini verir. Windows Server kapsayıcılarıyla kullanmak üzere bir disk oluşturmanız gerekiyorsa, diski doğru biçimlendirmek için parametresini ekleyin --os-type windows .

    az disk create \
      --resource-group MC_myResourceGroup_myAKSCluster_eastus \
      --name myAKSDisk \
      --size-gb 20 \
      --query id --output tsv
    

    Not

    Azure Diskleri SKU tarafından belirli bir boyut için faturalandırılır. Bu SKU'lar S4 veya P4 diskleri için 32GiB ile S80 veya P80 diskler için 32TiB arasında değişir (önizlemede). Premium yönetilen diskin aktarım hızı ve IOPS performansı hem SKU'ya hem de AKS kümesindeki düğümlerin örnek boyutuna bağlıdır. Bkz. Yönetilen Diskler Fiyatlandırması ve Performansı.

    Disk kaynak kimliği, aşağıdaki örnek çıktıda gösterildiği gibi komut başarıyla tamamlandıktan sonra görüntülenir. Sonraki bölümde diski bağlamak için disk kimliğini kullanacaksınız.

    /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
    

Diski birim olarak bağlama

  1. PersistentVolume ile pv-azuredisk.yaml dosyası oluşturun. Önceki adımdaki disk kaynağı kimliğiyle güncelleştirin volumeHandle . Windows Server kapsayıcıları için fsType parametresi için ntfs belirtin.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: disk.csi.azure.com
      name: pv-azuredisk
    spec:
      capacity:
        storage: 20Gi
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: managed-csi
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
        volumeAttributes:
          fsType: ext4
    
  2. PersistentVolumeClaim ile PersistentVolume kullanan bir pvc-azuredisk.yaml dosyası oluşturun.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. komutunu kullanarak PersistentVolume ve PersistentVolumeClaim'i kubectl apply oluşturun ve oluşturduğunuz iki YAML dosyasına başvurun.

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. komutunu kullanarak PersistentVolumeClaim'inizin oluşturulduğunu ve PersistentVolume'a kubectl get pvc bağlı olduğunu doğrulayın.

    kubectl get pvc pvc-azuredisk
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    
  5. PersistentVolumeClaim'inize başvurmak için bir azure-disk-pod.yaml dosyası oluşturun. Windows Server kapsayıcıları için, 'D:' gibi Windows yol kuralını kullanarak bir mountPath belirtin.

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      containers:
      - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        name: mypod
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
          - name: azure
            mountPath: /mnt/azure
      volumes:
        - name: azure
          persistentVolumeClaim:
            claimName: pvc-azuredisk
    
  6. Komutunu kullanarak yapılandırmayı uygulayın ve birimi bağlayın kubectl apply .

    kubectl apply -f azure-disk-pod.yaml
    

Kaynakları temizleme

Bu makalede oluşturulan kaynaklarla işiniz bittiğinde komutunu kullanarak kubectl delete bunları kaldırabilirsiniz.

# Remove the pod
kubectl delete -f azure-pvc-disk.yaml

# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml

Sonraki adımlar

  • Azure Diskler depolaması için CSI sürücüsünü kullanmayı öğrenmek için bkz . CSI sürücüsüyle Azure Disk depolamayı kullanma.
  • İlişkili en iyi yöntemler için bkz . AKS'de depolama ve yedeklemeler için en iyi yöntemler.