إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
خدمة Azure Kubernetes (AKS) هي خدمة Kubernetes مدارة يمكنك استخدامها لنشر المجموعات وإدارتها بسرعة. ستتعلم في هذا التشغيل السريع كيفية:
- نشر نظام مجموعة AKS باستخدام Azure CLI.
- أضف تجمع عقدة GPU المستندة إلى Linux مع تمكين عقد GPU المدارة.
- تحقق من تثبيت AKS وتكوين مكدس برامج GPU للجدولة.
عقد GPU المدارة بالكامل هي ميزة معاينة. عند تمكين عقد GPU المدارة، تقوم AKS بتثبيت وإدارة برنامج تشغيل NVIDIA GPU، والمكون الإضافي لجهاز NVIDIA Kubernetes، ومصدر مقاييس إدارة وحدة معالجة الرسومات (DCGM) لمركز البيانات، ومكونات مراقبة صحة GPU لتجمع عقدة GPU. تدمج عقد GPU المدارة أيضا مقاييس GPU في الوقت الحقيقي لاستيعابها في Azure Prometheus المدارة والخدمة المدارة Azure Monitor ل Prometheus. لمزيد من المعلومات، راجع إنشاء تجمع عقدة GPU مدار بالكامل على خدمة Azure Kubernetes (AKS) (معاينة)وإمكانية مراقبة GPU في خدمة Azure Kubernetes (AKS).
ملحوظة
تتضمن هذه المقالة خطوات لنشر عنقود لأغراض التقييم فقط. قبل نشر نظام مجموعة جاهز للإنتاج، تعرف على البنية المرجعية الأساسية للنظر في كيفية مواءمتها مع متطلبات عملك.
مهم
تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:
قَبلَ البدء
يضمن هذا التشغيل السريع الفهم الأساسي لمفاهيم Kubernetes. لمزيد من المعلومات، راجع Kubernetes الأساسية للمفاهيم الأساسية ل خدمة Azure Kubernetes (AKS).
- إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات تسجيل الدخول الأخرى، راجع المصادقة على Azure باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات حول الملحقات، راجع استخدام الملحقات وإدارتها باستخدام Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
- تحتاج Azure CLI الإصدار 2.85.0 أو أحدث. للعثور على الإصدار، قم بتشغيل
az --version. إذا كنت بحاجة إلى تثبيت أو ترقية Azure CLI، راجع تثبيت Azure CLI. - تأكد من أن الهوية التي تستخدمها لإنشاء مجموعتك لديها الحد الأدنى المناسب من الأذونات. لمزيد من المعلومات حول الوصول والهوية ل AKS، راجع خيارات الوصول والهوية لخدمة Azure Kubernetes (AKS).
- إذا كان لديك عدة اشتراكات Azure، فحدد معرف الاشتراك المناسب للفوترة باستخدام الأمر az account set. لمزيد من المعلومات، راجع كيفية إدارة اشتراكات Azure - Azure CLI.
- اعتمادا على اشتراكك في Azure، قد تحتاج إلى طلب زيادة الحصة النسبية لوحدة المعالجة المركزية الظاهرية لعائلة الجهاز الظاهري الممكنة لوحدة معالجة الرسومات التي تستخدمها في هذا التشغيل السريع. لمزيد من المعلومات، راجع زيادة الحصص النسبية لوحدة المعالجة المركزية الظاهرية من عائلة الجهاز الظاهري.
- تحتوي أحجام الأجهزة الظاهرية الممكنة على وحدة معالجة الرسومات على أجهزة متخصصة تخضع لتسعير أعلى وتوافر إقليمي. لمزيد من المعلومات، راجع أحجام الجهاز الظاهري المحسنة لوحدة معالجة الرسومات.
aks-preview تثبيت ملحق CLI
aks-preview قم بتثبيت ملحق CLI باستخدام الأمر az extension add.
az extension add --name aks-preview
قم بتحديث الملحق للتأكد من أن لديك أحدث إصدار باستخدام الأمر az extension update .
az extension update --name aks-preview
سجل ميزة المعاينة
سجل علامة الميزة ManagedGPUExperiencePreview في اشتراكك باستخدام الأمر az feature register .
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل. تحقق من حالة التسجيل باستخدام الأمر az feature show .
az feature show --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview --query properties.state
عندما تظهر الحالة Registered، قم بتحديث تسجيل Microsoft.ContainerService موفر الموارد باستخدام الأمر az provider register .
az provider register --namespace Microsoft.ContainerService
تحديد متغيرَات البيئة
حدد متغيرات البيئة التالية للاستخدام خلال هذا التشغيل السريع.
export RANDOM_STRING=$(printf '%05d%05d' "$RANDOM" "$RANDOM")
export RESOURCE_GROUP="myAKSResourceGroup$RANDOM_STRING"
export CLUSTER_NAME="myAKSCluster$RANDOM_STRING"
export GPU_NP="gpunp"
export GPU_VM_SIZE="Standard_NC4as_T4_v3"
export LOCATION="westus"
يخزن المتغير RANDOM_STRING سلسلة عشوائية مكونة من 10 أرقام. يتم ربط RESOURCE_GROUP قيم المتغيرين CLUSTER_NAME مع RANDOM_STRING القيمة لإنشاء أسماء فريدة. يخزن GPU_NP المتغير اسم تجمع عقدة GPU المدارة. يخزن GPU_VM_SIZE المتغير حجم الجهاز الظاهري الممكن لوحدة معالجة الرسومات لتجمع العقدة. المتغير LOCATION له القيمة westus. يمكنك استخدام هذه القيم المتغيرة أو إنشاء قيمك الخاص. استخدم echo الأمر لعرض قيم متغيرة مثل echo $RANDOM_STRING.
إنشاء مجموعة موارد
مجموعة موارد Azure هي مجموعة منطقية لنشر موارد Azure وإدارتها. عند إنشاء مجموعة موارد، حدد موقعا. هذا الموقع هو المكان الذي يتم فيه تخزين بيانات تعريف مجموعة الموارد وحيث يتم تشغيل مواردك في Azure إذا لم تحدد منطقة أخرى أثناء إنشاء الموارد.
استخدم أمر إنشاء مجموعة az لإنشاء مجموعة موارد.
az group create --name $RESOURCE_GROUP --location $LOCATION
يوضح المثال التالي النتيجة.
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myAKSResourceGroup<randomStringValue>",
"location": "westus",
"managedBy": null,
"name": "myAKSResourceGroup<randomStringValue>",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
إنشاء نظام مجموعة AKS
استخدم الأمر az aks create لإنشاء مجموعة AKS. ينشئ المثال التالي نظام مجموعة مع عقدة نظام واحدة ويمكن هوية مدارة معينة من قبل النظام.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys
عند إنشاء مجموعة جديدة، تقوم AKS تلقائيا بإنشاء مجموعة موارد ثانية لتخزين موارد AKS. لمزيد من المعلومات، يمكنك الاطلاع على إجابة سؤال لماذا يتم إنشاء مجموعتي موارد باستخدام AKS؟
يحدد العنقود في هذا المثال عدد عقد واحدة لتوفير الوقت والموارد. في بيئة الإنتاج، استخدم عدد العقد من ثلاث عقد أو أكثر.
az aks create يتم تعيين الأمر افتراضيا إلى ثلاث عقد إذا لم تحدد عدد العقد.
إضافة تجمع عقدة GPU مدار
أضف تجمع عقدة GPU المدارة المستندة إلى Linux إلى مجموعتك باستخدام الأمر az aks nodepool add .
--enable-managed-gpu=true تقوم المعلمة بتكوين AKS لتثبيت وإدارة برنامج تشغيل NVIDIA GPU، والمكون الإضافي لجهاز NVIDIA Kubernetes، ومصدر مقاييس DCGM، ومكونات مراقبة صحة GPU على تجمع العقدة.
يضيف المثال التالي تجمع عقدة GPU مدارة باستخدام نظام التشغيل Ubuntu Linux الافتراضي.
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $GPU_NP \
--node-count 1 \
--node-vm-size $GPU_VM_SIZE \
--node-taints sku=gpu:NoSchedule \
--enable-managed-gpu=true
--node-taints sku=gpu:NoSchedule تحافظ المعلمة على أحمال العمل غير الخاصة ب GPU خارج تجمع عقدة GPU ما لم تتضمن أحمال العمل تفاوتا مطابقا.
بعد إنشاء تجمع العقدة، استخدم الأمر az aks nodepool show للتأكد من تمكين ملف تعريف GPU المدار.
az aks nodepool show \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $GPU_NP \
--query "{Name:name, Mode:mode, VmSize:vmSize, Taints:nodeTaints, GpuProfile:gpuProfile}"
يجب أن يتضمن الإخراج القيم التالية.
{
"GpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
"migStrategy": null
}
},
"Mode": "User",
"Name": "gpunp",
"Taints": [
"sku=gpu:NoSchedule"
],
"VmSize": "Standard_NC4as_T4_v3"
}
الاتصال بنظام المجموعة
لإدارة نظام مجموعة Kubernetes، استخدم سطر أوامر العميلkubectl.
kubectl والذي سيكون مثبتًا بالفعل في حال كنت تستخدم Azure Cloud Shell. للتثبيت kubectl محليا، استخدم الأمر az aks install-cli .
قم بالتكوين
kubectlللاتصال بمجموعة Kubernetes الخاصة بك باستخدام الأمر az aks get-credentials . هذا الأمر يقوم بتحميل بيانات الاعتماد وضبط Kubernetes CLI لاستخدامها.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEتحقق من الاتصال بالمجموعة باستخدام الأمر kubectl get . يقوم هذا الأمر بإرجاع قائمة بعقد نظام المجموعة ويعرض تجمع العقدة لكل عقدة.
kubectl get nodes -L kubernetes.azure.com/agentpool,kubernetes.azure.com/modeNAME STATUS ROLES AGE VERSION AGENTPOOL MODE aks-nodepool1-123456789-vmss000000 Ready <none> 20m v1.34.4 nodepool1 system aks-gpunp-123456789-vmss000000 Ready <none> 5m36s v1.34.4 gpunp userتحقق من أن Kubernetes يمكنه جدولة أحمال عمل GPU على تجمع عقدة GPU المدارة.
kubectl get nodes -l kubernetes.azure.com/agentpool=$GPU_NP -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\n"}{end}'يظهر الإخراج عدد وحدات معالجة الرسومات القابلة للتخصيص لكل عقدة في تجمع عقدة GPU المدارة.
aks-gpunp-123456789-vmss000000 1
تمكين مجموعة مقاييس GPU
تتضمن تجمعات عقد GPU المدارة مصدر مقاييس DCGM. لاستيعاب مقاييس GPU في Azure Managed Prometheus، قم أولا بتمكين Azure Monitor الخدمة المدارة ل Prometheus على مجموعة AKS الخاصة بك. ثم قم بإنشاء ConfigMap الذي يمكن dcgmexporter ملف تعريف الكشط في عامل Azure Monitor.
cat <<EOF | kubectl create -f -
kind: ConfigMap
apiVersion: v1
data:
schema-version:
v1
config-version:
ver1
default-scrape-settings-enabled: |-
dcgmexporter = true
metadata:
name: ama-metrics-settings-configmap
namespace: kube-system
EOF
بعد تطبيق ConfigMap هذا، يتم استخراج جميع تجمعات عقد NVIDIA GPU الموجودة والجديدة على نظام المجموعة تلقائيا. لعرض مقاييس GPU في Azure Managed Grafana، راجع إمكانية مراقبة GPU في خدمة Azure Kubernetes (AKS).
قم بنشر التطبيق
نشر حمل عمل GPU للتأكد من أن تجمع عقدة GPU المدارة يمكنه تشغيل تطبيقات حقيقية. يعمل هذا المثال على تشغيل Ollama، الذي يخدم نموذج لغة صغير مفتوح المصدر كبير (Llama 3.2 1B) من خلال واجهة برمجة تطبيقات متوافقة مع OpenAI. تم بناء Ollama على llama.cpp، والذي يدعم NVIDIA T4 GPU في تجمع العقدة Standard_NC4as_T4_v3 الذي يستخدمه هذا التشغيل السريع.
ينشئ Deployment البيان التالي و.Service
Deployment تطلب وحدة معالجةnvidia.com/gpu: 1 الرسومات ()، تتضمن تسامحا مع sku=gpu:NoSchedule الصبغة، وتستخدم محدد عقدة لاستهداف تجمع عقدة GPU المدارة. عند بدء تشغيل الحاوية، فإنها تطلق خادم Ollama وتسحب llama3.2:1b النموذج بحيث تكون الحاوية جاهزة لخدمة الطلبات.
انشر التطبيق باستخدام الأمر التالي.
cat <<'EOF' | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: ollama
labels:
app: ollama
spec:
replicas: 1
selector:
matchLabels:
app: ollama
template:
metadata:
labels:
app: ollama
spec:
# Schedule onto the managed GPU node pool created in this quickstart.
nodeSelector:
kubernetes.azure.com/agentpool: gpunp
# Tolerate the GPU node pool taint (sku=gpu:NoSchedule).
tolerations:
- key: "sku"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
containers:
- name: ollama
image: ollama/ollama:0.30.10
ports:
- name: http
containerPort: 11434
env:
# Listen on all interfaces so the Service and kubelet probes can reach it.
- name: OLLAMA_HOST
value: "0.0.0.0:11434"
# Model to pull and serve on startup. Fits comfortably on a 16-GB T4.
- name: MODEL
value: "llama3.2:1b"
# Start the server, wait until it's ready, and then pull the model so the
# pod is self-contained (no manual "ollama pull" step required).
command: ["/bin/sh", "-c"]
args:
- |
ollama serve &
pid=$!
echo "Waiting for the Ollama server to be ready..."
until ollama list >/dev/null 2>&1; do sleep 2; done
echo "Server ready. Pulling model: $MODEL"
ollama pull "$MODEL" || echo "WARN: pull failed; run 'kubectl exec deploy/ollama -- ollama pull $MODEL' manually"
echo "Model $MODEL is ready to serve."
wait $pid
resources:
requests:
cpu: "1"
memory: 4Gi
limits:
cpu: "4"
memory: 16Gi
nvidia.com/gpu: 1
startupProbe:
httpGet:
path: /api/tags
port: http
periodSeconds: 5
failureThreshold: 60
readinessProbe:
httpGet:
path: /api/tags
port: http
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: http
periodSeconds: 20
volumeMounts:
- name: ollama-data
mountPath: /root/.ollama
volumes:
- name: ollama-data
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: ollama
labels:
app: ollama
spec:
type: ClusterIP
selector:
app: ollama
ports:
- name: http
port: 11434
targetPort: http
EOF
ملحوظة
يستهدف هذا البيان تجمع العقدة gpunp . إذا استخدمت قيمة مختلفة للمتغير GPU_NP ، فقم بتحديث قيمة محدد العقدة kubernetes.azure.com/agentpool لمطابقتها قبل تطبيق البيان.
تأكد من أن النشر جاهز باستخدام أمر حالة إطلاق kubectl . يمكن أن يستغرق تنزيل النموذج الأولي بضع دقائق.
kubectl rollout status deployment/ollama --timeout=600s
تحقق من تشغيل الجراب على تجمع عقدة GPU المدارة باستخدام الأمر kubectl get .
kubectl get pods -l app=ollama -o wide
يجب أن يظهر الإخراج الخاص بك الجراب قيد التشغيل على عقدة في تجمع العقدة gpunp .
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ollama-5b8f6c9d4f-2xq7p 1/1 Running 0 5m 10.244.1.10 aks-gpunp-12345678-vmss000000 <none> <none>
اختبار التطبيق
إعادة توجيه منفذ محلي إلى Service باستخدام الأمر kubectl port-forward . احتفظ بهذا الأمر قيد التشغيل، وافتح محطة طرفية ثانية للخطوات المتبقية.
kubectl port-forward svc/ollama 11434:11434
في الوحدة الطرفية الثانية، أرسل مطالبة إلى النموذج باستخدام نقطة نهاية إكمال الدردشة المتوافقة مع OpenAI.
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2:1b",
"messages": [{"role": "user", "content": "In one sentence, what is Azure Kubernetes Service?"}]
}'
يقوم النموذج بإرجاع استجابة JSON التي تحتوي على إجابة تم إنشاؤها، والتي تؤكد أن حمل العمل يخدم الاستدلال من تجمع عقدة GPU المدارة.
تأكد من تحميل النموذج على وحدة معالجة الرسومات باستخدام ollama ps الأمر .
PROCESSOR يظهر 100% GPU العمود عند تشغيل النموذج على T4.
kubectl exec deploy/ollama -- ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
llama3.2:1b baf6a787fdff 1.5 GB 100% GPU 4096 4 minutes from now
يمكنك أيضا عرض وحدة معالجة الرسومات مباشرة من داخل الجراب باستخدام nvidia-smi الأمر .
kubectl exec deploy/ollama -- nvidia-smi
عند الانتهاء من الاختبار، أوقف kubectl port-forward العملية عن طريق تحديد Ctrl+C في المحطة الطرفية الخاصة بها. تتم إزالة التطبيق عند حذف نظام المجموعة في الخطوة التالية.
قم بحذف نظام المجموعة
إذا لم تكن تخطط لعمل درس AKS، قم بتنظيف الموارد غير الضرورية لتجنب رسوم الفوترة على Azure. يمكنك إزالة مجموعة الموارد وخدمة الحاوية وجميع الموارد ذات الصلة باستخدام الأمر az group delete .
az group delete --name $RESOURCE_GROUP --no-wait --yes
لقد قمت بإنشاء نظام مجموعة AKS بهوية مدارة معينة من قبل النظام، وهو خيار الهوية الافتراضي المستخدم في هذا التشغيل السريع. يدير النظام الأساسي هذه الهوية بحيث لا تحتاج إلى إزالتها يدويا.
الخطوات التالية
في هذا التشغيل السريع، قمت بنشر مجموعة Kubernetes ثم أضفت تجمع عقدة GPU المدارة المستندة إلى Linux. لمزيد من المعلومات حول عقد GPU المدارة ومقاييس GPU، راجع المقالات التالية:
- إنشاء تجمع عقدة GPU مدار بالكامل على خدمة Azure Kubernetes (AKS) (معاينة).
- إمكانية مراقبة وحدة معالجة الرسومات في خدمة Azure Kubernetes (AKS).
لمعرفة المزيد حول AKS والقيام بمثال كامل من التعليمات البرمجية إلى النشر، تابع إلى البرنامج التعليمي لنظام مجموعة Kubernetes.