مشاركة عبر


استخدام أقراص Azure Premium SSD v2 على Azure Kubernetes Service

توفر أقراص Azure Premium SSD v2 أحمال عمل مؤسسية مكثفة من IO وزمن انتقال ثابت للقرص دون الثانية وIOPS ومعدل نقل عال. يمكن تكوين أداء (السعة ومعدل النقل ومعدل الإدخال/الإخراج في الثانية) للإصدار 2 من محركات الأقراص ذات الحالة الصلبة المتميزة بصفةٍ مستقلةٍ في أي وقت، مما يسهل على المزيد من السيناريوهات لتكون فعالةً من حيث التكلفة مع تلبية احتياجات الأداء.

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

قبل البدء

قبل إنشاء أو ترقية مجموعة AKS قادرة على استخدام أقراص Azure Premium SSD v2، تحتاج إلى إنشاء مجموعة AKS في نفس المنطقة ومنطقة التوفر التي تدعم Premium Storage وإرفاق الأقراص باتباع الخطوات أدناه.

بالنسبة إلى نظام مجموعة AKS موجود، يمكنك تمكين أقراص Premium SSD v2 عن طريق إضافة تجمع عقدة جديد إلى نظام المجموعة الخاص بك، ثم إرفاق الأقراص باتباع الخطوات أدناه.

هام

تتطلب أقراص Azure Premium SSD v2 تجمعات العقد الموزعة في المناطق التي تدعم هذه الأقراص. للحصول على قائمة بالمناطق المدعومة، راجع المناطق المدعومة بأقراص Premium SSD v2.

القيود

  • تحتوي أقراص Azure Premium SSD v2 على قيود معينة تحتاج إلى أن تكون على دراية بها. للحصول على قائمة كاملة، راجع قيود Premium SSD v2.

استخدام أقراص Premium SSD v2 ديناميكيا مع فئة تخزين

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

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

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

في هذا المثال، يمكنك إنشاء فئة تخزين تشير إلى أقراص Premium SSD v2. قم بإنشاء ملف باسم azure-pv2-disk-sc.yaml، وانسخه في البيان التالي.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: premium2-disk-sc
parameters:
   cachingMode: None
   skuName: PremiumV2_LRS
   DiskIOPSReadWrite: "4000"
   DiskMBpsReadWrite: "1000"
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

أنشئ فئة التخزين باستخدام الأمر kubectl apply وحدد ملف azure-pv2-disk-sc.yaml :

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

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

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

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

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

قم بإنشاء ملف باسم azure-pv2-disk-pvc.yaml، وانسخه في البيان التالي. تطلب المطالبة قرصًا باسم premium2-disk بحجم 1000 غيغابايت مع وصول ReadWriteOnce . يتم تحديد فئة التخزين premium2-disk-sc كفئة التخزين.

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

أنشئ مطالبة وحدة التخزين الثابتة باستخدام الأمر kubectl apply وحدد ملف azure-pv2-disk-pvc.yaml :

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

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

persistentvolumeclaim/premium2-disk created

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

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

قم بإنشاء ملف باسم nginx-premium2.yaml، وانسخه في البيان التالي.

kind: Pod
apiVersion: v1
metadata:
  name: nginx-premium2
spec:
  containers:
  - name: nginx-premium2
    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: premium2-disk

قم بإنشاء الكبسولة باستخدام الأمر kubectl apply ، كما هو موضح في المثال التالي:

kubectl apply -f nginx-premium2.yaml

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

pod/nginx-premium2 created

لديك الآن كبسولة قيد التشغيل مع قرص Azure المثبت في الدليل /mnt/azure. يمكن رؤية هذه التهيئة عند فحص الكبسولة الخاص بك عبر kubectl describe pod nginx-premium2، كما هو موضح في المثال المكثف التالي:

kubectl describe pod nginx-premium2

[...]
Volumes:
  volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  premium2-disk
    ReadOnly:   false
  kube-api-access-sh59b:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason                  Age    From                     Message
  ----    ------                  ----   ----                     -------
  Normal  Scheduled               7m58s  default-scheduler        Successfully assigned default/nginx-premium2 to aks-agentpool-12254644-vmss000006
  Normal  SuccessfulAttachVolume  7m46s  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-ff39fb64-1189-4c52-9a24-e065b855b886"
  Normal  Pulling                 7m39s  kubelet                  Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine"
  Normal  Pulled                  7m38s  kubelet                  Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" in 1.192915667s
  Normal  Created                 7m38s  kubelet                  Created container nginx-premium2
  Normal  Started                 7m38s  kubelet                  Started container nginx-premium2
[...]

تعيين حدود IOPS ومعدل النقل

عمليات الإدخال/الإخراج في الثانية (IOPS) وحدود معدل النقل لقرص Azure Premium v2 SSD غير مدعومة حاليا من خلال AKS. لضبط الأداء، يمكنك استخدام أمر Azure CLI az disk update وتضمين --disk-iops-read-write المعلمتين و --disk-mbps-read-write .

يحدث المثال التالي قراءة/كتابة IOPS القرص إلى 5000 وMbps إلى 200. بالنسبة إلى --resource-group، يجب أن تكون القيمة هي مجموعة الموارد الثانية التي يتم إنشاؤها تلقائيا لتخزين عقد عامل AKS مع اصطلاح التسمية MC_resourcegroupname_clustername_location. لمزيد من المعلومات، راجع لماذا يتم إنشاء مجموعتين من الموارد باستخدام AKS؟.

قيمة المعلمة --name هي اسم وحدة التخزين التي تم إنشاؤها باستخدام StorageClass، وتبدأ ب pvc-. لتعريف اسم القرص، يمكنك تشغيل kubectl get pvc أو الانتقال إلى مجموعة الموارد الثانوية في المدخل للعثور عليه. راجع إدارة الموارد من مدخل Microsoft Azure لمعرفة المزيد.

az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200  

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