دمج Azure HPC Cache مع خدمة Azure Kubernetes (AKS)

تقوم Azure HPC Cacheبتسريع الوصول إلى بياناتك من أجل مهام الحوسبة عالية الأداء (HPC). من خلال تخزين الملفات مؤقتاً في Azure، يجلب Azure HPC Cache قابلية التوسع للحوسبة السحابية إلى سير عملك الحالي. توضح هذه المقالة كيفية دمج Azure HPC Cache معAzure Kubernetes Service (AKS).

قبل البدء

  • يجب أن تكون مجموعة AKS في منطقة تدعم Azure HPC Cache.

  • تحتاج إلى الإصدار 2.7 من Azure CLI أو أحدث. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

  • تسجيل الملحق hpc-cache في اشتراك Azure الخاص بك. لمزيد من المعلومات حول استخدام HPC Cache مع Azure CLI، راجع متطلبات HPC Cache CLI.

  • راجع المتطلبات الأساسية ل HPC Cache. تحتاج إلى تلبية ما يلي قبل أن تتمكن من تشغيل HPC Cache:

    • تتطلب ذاكرة التخزين المؤقت شبكة فرعية مخصصة مع توفر 64 عنوان IP على الأقل.
    • يجب ألا تستضيف الشبكة الفرعية أجهزة ظاهرية أو حاويات أخرى.
    • يجب أن تكون الشبكة الفرعية قابلة للوصول من عقد AKS.
  • إذا كنت بحاجة إلى تشغيل التطبيق الخاص بك كمستخدم دون وصول الجذر، فقد تحتاج إلى تعطيل سحق الجذر باستخدام الأمر مالك التغيير (chown) لتغيير ملكية الدليل إلى مستخدم آخر. يحتاج المستخدم الذي لا يملك حق الوصول إلى الجذر إلى امتلاك دليل للوصول إلى نظام الملفات. لكي يمتلك المستخدم دليلا، يجب على المستخدم الجذر تسمية دليل لهذا المستخدم، ولكن إذا كانت HPC Cache تسحق الجذر، يتم رفض هذه العملية لأن المستخدم الجذر (UID 0) يتم تعيينه إلى المستخدم المجهول. لمزيد من المعلومات حول سحق الجذر ونهج وصول العميل، راجع نهج الوصول إلى HPC Cache.

تثبيت hpc-cache امتداد Azure CLI

هام

تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:

لتثبيت ملحق hpc-cache، قم بتشغيل الأمر التالي:

az extension add --name hpc-cache

قم بتشغيل الأمر التالي للتحديث إلى أحدث إصدار من الملحق الذي تم إصداره:

az extension update --name hpc-cache

تسجيل علامة ميزة StorageCache

تسجيل موفر موارد Microsoft.StorageCache باستخدام az provider register الأمر .

az provider register --namespace Microsoft.StorageCache --wait

يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل. تحقق من حالة التسجيل باستخدام الأمر az feature show :

az feature show --namespace "Microsoft.StorageCache"

إنشاء Azure HPC Cache

  1. احصل على مجموعة موارد العقدة az aks show باستخدام الأمر مع معلمة --query nodeResourceGroup الاستعلام.

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

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

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. إنشاء شبكة فرعية مخصصة ل HPC Cache باستخدام az network vnet subnet create الأمر . أولا حدد متغيرات البيئة ل RESOURCE_GROUPو VNET_NAMEVNET_IDو وSUBNET_NAME. انسخ الإخراج من الخطوة السابقة ل RESOURCE_GROUP، وحدد قيمة ل SUBNET_NAME.

    RESOURCE_GROUP=MC_myResourceGroup_myAKSCluster_eastus
    VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
    VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
    SUBNET_NAME=MyHpcCacheSubnet
    
    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 10.0.0.0/26
    
  3. إنشاء HPC Cache في نفس مجموعة موارد العقدة والمنطقة. أولا حدد متغير SUBNET_IDالبيئة .

    SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv)
    

    إنشاء HPC Cache باستخدام az hpc-cache create الأمر . ينشئ المثال التالي HPC Cache في منطقة شرق الولايات المتحدة بنوع ذاكرة التخزين المؤقت القياسية 2G المسماة MyHpcCache. حدد قيمة ل --location و --sku-name و --name.

    az hpc-cache create \
      --resource-group $RESOURCE_GROUP \
      --cache-size-gb "3072" \
      --location eastus \
      --subnet $SUBNET_ID \
      --sku-name "Standard_2G" \
      --name MyHpcCache
    

    إشعار

    قد يستغرق إنشاء HPC Cache ما يصل إلى 20 دقيقة.

إنشاء وتكوين تخزين Azure

  1. إنشاء حساب تخزين باستخدام az storage account create الأمر . أولا حدد متغير STORAGE_ACCOUNT_NAMEالبيئة .

    هام

    تحتاج إلى اختيار اسم حساب تخزين فريد. استبدل uniquestorageaccount باسمك المحدد. يجب أن يتراوح طول أسماء حسابات التخزين بين 3 و24 حرفا ويمكن أن تحتوي على أرقام وأحرف صغيرة فقط.

    STORAGE_ACCOUNT_NAME=uniquestorageaccount
    

    ينشئ المثال التالي حساب تخزين في منطقة شرق الولايات المتحدة مع Standard_LRS SKU. حدد قيمة ل --location و --sku.

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location eastus \
      --sku Standard_LRS
    
  2. قم بتعيين دور Storage Blob Data Contributor على اشتراكك باستخدام az role assignment create الأمر . أولا، حدد متغيرات STORAGE_ACCOUNT_ID البيئة و AD_USER.

    STORAGE_ACCOUNT_ID=$(az storage account show --name $STORAGE_ACCOUNT_NAME --query "id" -o tsv)
    AD_USER=$(az ad signed-in-user show --query objectId -o tsv)
    
    az role assignment create --role "Storage Blob Data Contributor" --assignee $AD_USER --scope $STORAGE_ACCOUNT_ID
    
  3. إنشاء حاوية Blob داخل حساب التخزين باستخدام az storage container create الأمر . أولا، حدد متغير CONTAINER_NAME البيئة واستبدل اسم حاوية Blob.

    CONTAINER_NAME=mystoragecontainer
    
    az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME --auth-mode login
    
  4. قم بتوفير أذونات لحساب خدمة Azure HPC Cache للوصول إلى حساب التخزين وحاوية Blob باستخدام az role assignment الأوامر. أولا، حدد متغيرات HPC_CACHE_USER البيئة و HPC_CACHE_ID.

    HPC_CACHE_USER="StorageCache Resource Provider"
    HPC_CACHE_ID=$(az ad sp list --display-name "${HPC_CACHE_USER}" --query "[].objectId" -o tsv)
    
    az role assignment create --role "Storage Account Contributor" --assignee $HPC_CACHE_ID --scope $STORAGE_ACCOUNT_ID
    az role assignment create --role "Storage Blob Data Contributor" --assignee $HPC_CACHE_ID --scope $STORAGE_ACCOUNT_ID
    
  5. أضف حاوية blob إلى HPC Cache كهدف تخزين باستخدام az hpc-cache blob-storage-target add الأمر . ينشئ المثال التالي حاوية كائن ثنائي كبير الحجم تسمى MyStorageTarget إلى HPC Cache MyHpcCache. حدد قيمة ل --name, --cache-name, and --virtual-namespace-path.

    az hpc-cache blob-storage-target add \
      --resource-group $RESOURCE_GROUP \
      --cache-name MyHpcCache \
      --name MyStorageTarget \
      --storage-account $STORAGE_ACCOUNT_ID \
      --container-name $CONTAINER_NAME \
      --virtual-namespace-path "/myfilepath"
    

إعداد موازنة تحميل العميل

  1. إنشاء منطقة Azure Private DNS لعناوين IP التي تواجه العميل باستخدام az network private-dns zone create الأمر . أولا حدد متغير PRIVATE_DNS_ZONE البيئة وحدد اسما للمنطقة.

    PRIVATE_DNS_ZONE="myhpccache.local"
    
    az network private-dns zone create \
      --resource-group $RESOURCE_GROUP \
      --name $PRIVATE_DNS_ZONE
    
  2. إنشاء ارتباط DNS بين Azure Private DNS Zone وVNet باستخدام az network private-dns link vnet create الأمر . استبدل القيمة ل --name.

    az network private-dns link vnet create \
      --resource-group $RESOURCE_GROUP \
      --name MyDNSLink \
      --zone-name $PRIVATE_DNS_ZONE \
      --virtual-network $VNET_NAME \
      --registration-enabled true
    
  3. إنشاء اسم DNS round-robin لعناوين IP التي تواجه العميل باستخدام az network private-dns record-set a create الأمر . أولا، حدد متغيرات DNS_NAMEالبيئة و HPC_MOUNTS0HPC_MOUNTS1و و.HPC_MOUNTS2 استبدل قيمة الخاصية DNS_NAME.

    DNS_NAME="server"
    HPC_MOUNTS0=$(az hpc-cache show --name "MyHpcCache" --resource-group $RESOURCE_GROUP --query "mountAddresses[0]" -o tsv | tr --delete '\r')
    HPC_MOUNTS1=$(az hpc-cache show --name "MyHpcCache" --resource-group $RESOURCE_GROUP --query "mountAddresses[1]" -o tsv | tr --delete '\r')
    HPC_MOUNTS2=$(az hpc-cache show --name "MyHpcCache" --resource-group $RESOURCE_GROUP --query "mountAddresses[2]" -o tsv | tr --delete '\r')
    
    az network private-dns record-set a add-record -g $RESOURCE_GROUP -z $PRIVATE_DNS_ZONE -n $DNS_NAME -a $HPC_MOUNTS0
    
    az network private-dns record-set a add-record -g $RESOURCE_GROUP -z $PRIVATE_DNS_ZONE -n $DNS_NAME -a $HPC_MOUNTS1
    
    az network private-dns record-set a add-record -g $RESOURCE_GROUP -z $PRIVATE_DNS_ZONE -n $DNS_NAME -a $HPC_MOUNTS2
    

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

  1. أنشئ ملفا باسم pv-nfs.yaml لتعريف وحدة تخزين ثابتة ثم الصقها في البيان التالي. استبدل قيم الخاصية server و path.

    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nfs
    spec:
      capacity:
        storage: 10000Gi
      accessModes:
        - ReadWriteMany
      mountOptions:
        - vers=3
      nfs:
        server: server.myhpccache.local
        path: /
    
  2. احصل على بيانات الاعتماد لمجموعة Kubernetes باستخدام az aks get-credentials الأمر .

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. إنشاء وحدة التخزين الثابتة باستخدام kubectl apply الأمر .

    kubectl apply -f pv-nfs.yaml
    
  4. تحقق من أن حالة وحدة التخزين الثابتة متوفرة باستخدام kubectl describe الأمر .

    kubectl describe pv pv-nfs
    

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

  1. أنشئ ملفا باسم pvc-nfs.yamlلتعريف مطالبة وحدة تخزين ثابتة، ثم الصق البيان التالي.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. إنشاء مطالبة وحدة التخزين الدائمة باستخدام kubectl apply الأمر .

    kubectl apply -f pvc-nfs.yaml
    
  3. تحقق من أن حالة مطالبة وحدة التخزين الثابتة مرتبطة kubectl describe باستخدام الأمر .

    kubectl describe pvc pvc-nfs
    

تركيب HPC Cache باستخدام جراب

  1. أنشئ ملفا باسم nginx-nfs.yaml لتعريف جراب يستخدم مطالبة وحدة التخزين الثابتة، ثم الصق البيان التالي.

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-nfs
    spec:
      containers:
     - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        name: nginx-nfs
        command:
        - "/bin/sh"
        - "-c"
        - while true; do echo $(date) >> /mnt/azure/myfilepath/outfile; sleep 1; done
        volumeMounts:
        - name: disk01
          mountPath: /mnt/azure
      volumes:
     - name: disk01
        persistentVolumeClaim:
          claimName: pvc-nfs
    
  2. إنشاء الجراب باستخدام kubectl apply الأمر .

    kubectl apply -f nginx-nfs.yaml
    
  3. تحقق من تشغيل الجراب باستخدام kubectl describe الأمر .

    kubectl describe pod nginx-nfs
    
  4. تحقق من تحميل وحدة التخزين الخاصة بك في الجراب باستخدام kubectl exec الأمر للاتصال بالجراب.

    kubectl exec -it nginx-nfs -- sh
    

    للتحقق مما إذا كان يتم تحميل وحدة التخزين، قم بتشغيل df بتنسيقها القابل للقراءة من قبل الإنسان باستخدام --human-readable الخيار (-h للاختصار).

    df -h
    

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

    Filesystem             Size  Used Avail Use% Mounted on
    ...
    server.myhpccache.local:/myfilepath 8.0E         0      8.0E   0% /mnt/azure/myfilepath
    ...
    

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