استخدام الأقراص الفائقة من Azure على خدمة Azure Kubernetes

توفر الأقراص الفائقة من Azure معدل نقل عال وIOPS عال و تخزين قرص بزمن انتقال منخفض متناسق للتطبيقات الخاصة بك. فائدة رئيسية واحدة من الأقراص الفائقة هي القدرة على تغيير أداء SSD بشكل حيوي جنبًا إلى جنب مع أحمال العمل الخاصة بك دون الحاجة إلى إعادة تشغيل العقد وكيل الخاص بك. الأقراص الفائقة ملاءمة لأحمال العمل كثيفة البيانات.

توضح هذه المقالة كيفية تكوين مجموعة AKS جديدة أو موجودة لاستخدام أقراص Azure ultra.

قبل البدء

يمكن تعيين هذه الميزة فقط عند إنشاء نظام المجموعة أو عند إنشاء تجمع عقدة.

القيود

  • تتطلب أقراص Azure ultra تجمعات العقد الموزعة في مناطق التوفر والمناطق التي تدعم هذه الأقراص، ويتم دعمها فقط بواسطة سلسلة أجهزة ظاهرية معينة. راجع الجدول المقابل ضمن قسم قيود القرص Ultra للحصول على مزيد من المعلومات.
  • لا يمكن استخدام أقراص Ultra مع بعض الميزات والوظائف، مثل مجموعات التوفر أو تشفير قرص Azure. راجع قيود قرص Ultra للحصول على أحدث المعلومات.

إنشاء نظام مجموعة يمكنه استخدام الأقراص الفائقة

إنشاء مجموعة AKS قادرة على الاستفادة من أقراص Azure الفائقة باستخدام أوامر CLI التالية. استخدم المعلمة --enable-ultra-ssd لتعيين الميزة EnableUltraSSD .

az aks create \
    --resource-group MyResourceGroup \
    --name myAKSCluster \
    --location westus2 \
    --node-vm-size Standard_D2s_v3 \
    --zones 1 2 \
    --node-count 2 \
    --enable-ultra-ssd \
    --generate-ssh-keys

إذا كنت ترغب في إنشاء نظام مجموعة دون دعم القرص الفائق، يمكنك القيام بذلك عن طريق حذف المعلمة --enable-ultra-ssd .

تمكين الأقراص الفائقة على نظام مجموعة موجود

يمكنك تمكين الأقراص الفائقة على مجموعة موجودة عن طريق إضافة تجمع عقدة جديد إلى نظام المجموعة الذي يدعم الأقراص الفائقة. تكوين تجمع عقدة جديدة لاستخدام الأقراص فائقة باستخدام المعلمة --enable-ultra-ssdaz aks nodepool add مع الأمر .

إذا كنت ترغب في إنشاء تجمعات عقد جديدة دون دعم للأقراص الفائقة، يمكنك القيام بذلك عن طريق استبعاد المعلمة --enable-ultra-ssd .

استخدام الأقراص الفائقة بشكل ديناميكي مع فئة تخزين

لاستخدام الأقراص الفائقة في عمليات التوزيع أو المجموعات ذات الحالة الخاصة بك، يمكنك استخدام فئة تخزين للتزويد الديناميكي.

إنشاء فئة التخزين

يتم استخدام فئة تخزين لتعريف كيفية إنشاء وحدة تخزين بشكل حيوي مع وحدة تخزين ثابتة. لمزيد من المعلومات حول فئات التخزين Kubernetes، راجع فئات تخزين Kubernetes . في هذا المثال، سننشئ فئة تخزين تشير إلى الأقراص الفائقة.

  1. أنشئ ملفا باسم azure-ultra-disk-sc.yaml وانسخه في البيان التالي:

    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. إنشاء فئة التخزين باستخدام kubectl apply الأمر وتحديد الملف الخاص بك azure-ultra-disk-sc.yaml .

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

    يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:

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

إنشاء مطالبة وحدة تخزين ثابتة

يتم استخدام مطالبة الحجم الثابت (PVC)؛ لتوفير التخزين تلقائيًا بناءً على فئة التخزين. في هذه الحالة، يمكن استخدام PVC فئة التخزين التي تم إنشاؤها مسبقًا لإنشاء قرص فائق.

  1. أنشئ ملفا باسم azure-ultra-disk-pvc.yaml وانسخه في البيان التالي:

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

    تطلب المطالبة قرصًا باسم ultra-disk بحجم 1000 غيغابايت مع وصول ReadWriteOnce . يتم تحديد فئة التخزين ultra-disk-sc كفئة التخزين.

  2. إنشاء مطالبة وحدة التخزين الدائمة باستخدام kubectl apply الأمر وتحديد الملف الخاص بك azure-ultra-disk-pvc.yaml .

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

    يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:

    persistentvolumeclaim/ultra-disk created
    

استخدم الحجم الثابت

بمجرد إنشاء مطالبة وحدة التخزين الثابتة، وتوفير القرص بنجاح، يمكن إنشاء كبسولة للوصول إلى القرص. ينشئ البيان التالي كبسولة NGINX أساسي يستخدم مطالبة وحدة التخزين الثابتة المسمى ultra-disk لتحميل قرص Azure في المسار /mnt/azure.

  1. أنشئ ملفا باسم nginx-ultra.yaml وانسخه في البيان التالي:

    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. إنشاء الجراب باستخدام kubectl apply الأمر وتحديد الملف الخاص بك nginx-ultra.yaml .

    kubectl apply -f nginx-ultra.yaml
    

    يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:

    pod/nginx-ultra created
    

    لديك الآن كبسولة قيد التشغيل مع قرص Azure المثبت في الدليل /mnt/azure.

  3. راجع تفاصيل التكوين باستخدام kubectl describe pod الأمر وحدد الملف الخاص بك nginx-ultra.yaml .

    kubectl describe pod nginx-ultra
    

    يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:

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

الخطوات التالية