دمج 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
احصل على مجموعة موارد العقدة
az aks show
باستخدام الأمر مع معلمة--query nodeResourceGroup
الاستعلام.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:
MC_myResourceGroup_myAKSCluster_eastus
إنشاء شبكة فرعية مخصصة ل HPC Cache باستخدام
az network vnet subnet create
الأمر . أولا حدد متغيرات البيئة لRESOURCE_GROUP
وVNET_NAME
VNET_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
إنشاء 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
إنشاء حساب تخزين باستخدام
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
قم بتعيين دور 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
إنشاء حاوية 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
قم بتوفير أذونات لحساب خدمة 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
أضف حاوية 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"
إعداد موازنة تحميل العميل
إنشاء منطقة 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
إنشاء ارتباط 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
إنشاء اسم DNS round-robin لعناوين IP التي تواجه العميل باستخدام
az network private-dns record-set a create
الأمر . أولا، حدد متغيراتDNS_NAME
البيئة وHPC_MOUNTS0
HPC_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
إنشاء وحدة تخزين ثابتة
أنشئ ملفا باسم
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: /
احصل على بيانات الاعتماد لمجموعة Kubernetes باستخدام
az aks get-credentials
الأمر .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
إنشاء وحدة التخزين الثابتة باستخدام
kubectl apply
الأمر .kubectl apply -f pv-nfs.yaml
تحقق من أن حالة وحدة التخزين الثابتة متوفرة باستخدام
kubectl describe
الأمر .kubectl describe pv pv-nfs
إنشاء مطالبة وحدة التخزين الثابتة
أنشئ ملفا باسم
pvc-nfs.yaml
لتعريف مطالبة وحدة تخزين ثابتة، ثم الصق البيان التالي.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100Gi
إنشاء مطالبة وحدة التخزين الدائمة باستخدام
kubectl apply
الأمر .kubectl apply -f pvc-nfs.yaml
تحقق من أن حالة مطالبة وحدة التخزين الثابتة مرتبطة
kubectl describe
باستخدام الأمر .kubectl describe pvc pvc-nfs
تركيب HPC Cache باستخدام جراب
أنشئ ملفا باسم
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
إنشاء الجراب باستخدام
kubectl apply
الأمر .kubectl apply -f nginx-nfs.yaml
تحقق من تشغيل الجراب باستخدام
kubectl describe
الأمر .kubectl describe pod nginx-nfs
تحقق من تحميل وحدة التخزين الخاصة بك في الجراب باستخدام
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 ...
الخطوات التالية
- لمزيد من المعلومات حول Azure HPC Cache، راجع نظرة عامة على HPC Cache.
- لمزيد من المعلومات حول استخدام NFS مع AKS، راجع إنشاء واستخدام وحدة تخزين خادم Linux لنظام ملفات الشبكة (NFS) يدويا مع AKS.
Azure Kubernetes Service