Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Kubernetes Service (AKS) ist ein verwalteter Kubernetes-Dienst, mit dem Sie Cluster schnell bereitstellen und verwalten können. In dieser Schnellstartanleitung erfahren Sie, wie Sie:
- Stellen Sie einen AKS-Cluster mithilfe von Azure CLI bereit.
- Fügen Sie einen Linux-basierten GPU-Knotenpool mit aktivierten verwalteten GPU-Knoten hinzu.
- Stellen Sie sicher, dass AKS den GPU-Softwarestapel für die Planung installiert und konfiguriert hat.
Vollverwaltete GPU-Knoten sind eine Vorschaufunktion. Wenn Sie verwaltete GPU-Knoten aktivieren, installiert und verwaltet AKS den NVIDIA GPU-Treiber, NVIDIA Kubernetes-Geräte-Plug-In, Data Center GPU Manager (DCGM)-Metrikexporteur und GPU-Integritätsüberwachungskomponenten für den GPU-Knotenpool. Verwaltete GPU-Knoten integrieren auch GPU-Echtzeitmetriken zur Erfassung in Azure Managed Prometheus und den verwalteten Dienst für Prometheus in Azure Monitor. Weitere Informationen finden Sie unter Erstellen eines vollständig verwalteten GPU-Knotenpools auf Azure Kubernetes Service (AKS) (Vorschau) und GPU-Observierbarkeit in Azure Kubernetes Service (AKS).
Note
Dieser Artikel enthält Schritte zum Bereitstellen eines Clusters nur zu Auswertungszwecken. Bevor Sie einen produktionsbereiten Cluster bereitstellen, machen Sie sich mit der basisbasierten Referenzarchitektur vertraut, um zu berücksichtigen, wie sie ihren Geschäftlichen Anforderungen entspricht.
Important
AKS-Preview-Funktionen stehen auf Selbstbedienungs- und Opt-in-Basis zur Verfügung. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Bevor Sie anfangen
Für diese Schnellstartanleitung werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes-Kernkonzepte für Azure Kubernetes Service (AKS).
- Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, installieren Sie die Azure CLI. Wenn Sie mit Windows oder macOS arbeiten, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter How to run the Azure CLI in a Docker container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Weitere Anmeldeoptionen finden Sie unter Authentifizierung bei Azure mithilfe von Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI-Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
- Sie benötigen Azure CLI Version 2.85.0 oder höher. Führen Sie
az --versionaus, um die Version zu finden. Informationen zum Installieren oder Upgraden der Azure CLI finden Sie unter Installieren der Azure CLI. - Stellen Sie sicher, dass die Identität, die Sie zum Erstellen Ihres Clusters verwenden, über die entsprechenden Mindestberechtigungen verfügt. Weitere Informationen zu Zugriff und Identität für AKS finden Sie unter Zugriffs- und Identitätsoptionen für Azure Kubernetes Service (AKS).
- Wenn Sie über mehrere Azure Abonnements verfügen, wählen Sie die entsprechende Abonnement-ID für die Abrechnung aus, indem Sie den Befehl "az account set" verwenden. Weitere Informationen finden Sie unter Verwalten von Azure Abonnements – Azure CLI.
- Je nach Ihrem Azure-Abonnement müssen Sie möglicherweise eine vCPU-Kontingenterhöhung für die GPU-fähige VM-Familie anfordern, die Sie in dieser Schnellstartanleitung verwenden. Weitere Informationen finden Sie unter "Erhöhen von VCPU-Kontingenten der VM-Familie".
- GPU-fähige VM-Größen umfassen spezielle Hardware, die mit höheren Preisen und eingeschränkter regionaler Verfügbarkeit verbunden ist. Weitere Informationen finden Sie unter GPU-optimierte Größe virtueller Computer.
Installieren Sie die aks-preview-Erweiterung für die Befehlszeilenschnittstelle
Installieren Sie die aks-preview CLI-Erweiterung mithilfe des Befehls "az extension add" .
az extension add --name aks-preview
Aktualisieren Sie die Erweiterung, um sicherzustellen, dass Sie über die neueste Version verfügen, indem Sie den Befehl "az extension update" verwenden.
az extension update --name aks-preview
Registrieren des Vorschaufeatures
Registrieren Sie das ManagedGPUExperiencePreview Feature-Flag in Ihrem Abonnement mithilfe des Befehls "az feature register" .
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird. Überprüfen Sie den Registrierungsstatus mithilfe des Befehls az feature show.
az feature show --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview --query properties.state
Wenn der Status "Registriert" angezeigt wird, aktualisieren Sie die Registrierung des Microsoft.ContainerService Ressourcenanbieters mithilfe des Befehls " az provider register" .
az provider register --namespace Microsoft.ContainerService
Definieren von Umgebungsvariablen
Definieren Sie die folgenden Umgebungsvariablen für die verwendung in dieser Schnellstartanleitung.
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"
Die RANDOM_STRING Variable speichert eine zufällige 10-stellige Zeichenfolge. Die RESOURCE_GROUP Werte und CLUSTER_NAME Variablen werden mit dem RANDOM_STRING Wert verkettet, um eindeutige Namen zu erstellen. Die GPU_NP Variable speichert den Namen für den verwalteten GPU-Knotenpool. Die GPU_VM_SIZE Variable speichert die GRÖßE der GPU-aktivierten VM für den Knotenpool. Die LOCATION Variable weist den Wert "westus" auf. Sie können diese Variablenwerte verwenden oder eigene erstellen. Verwenden Sie den echo Befehl, um Variablenwerte wie echo $RANDOM_STRING anzuzeigen.
Erstellen einer Ressourcengruppe
Eine Azure Ressourcengruppe ist eine logische Gruppe zum Bereitstellen und Verwalten von Azure Ressourcen. Wenn Sie eine Ressourcengruppe erstellen, geben Sie einen Speicherort an. An diesem Speicherort werden die Metadaten der Ressourcengruppe gespeichert und in Azure ausgeführt, wenn Sie während der Ressourcenerstellung keine andere Region angeben.
Verwenden Sie den Befehl "az group create " zum Erstellen einer Ressourcengruppe.
az group create --name $RESOURCE_GROUP --location $LOCATION
Das folgende Beispiel zeigt das Ergebnis.
{
"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"
}
Erstellen eines AKS-Clusters
Erstellen Sie mithilfe des Befehls az aks create einen AKS-Cluster. Im folgenden Beispiel wird ein Cluster mit einem Systemknoten erstellt und eine vom System zugewiesene verwaltete Identität aktiviert.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys
Beim Erstellen eines neuen Clusters erstellt AKS automatisch eine zweite Ressourcengruppe, um die AKS-Ressourcen zu speichern. Weitere Informationen finden Sie unter Warum werden zwei Ressourcengruppen mit AKS erstellt?.
Der Cluster in diesem Beispiel gibt eine Knotenanzahl von einem an, um Zeit und Ressourcen zu sparen. Verwenden Sie in einer Produktionsumgebung eine Knotenanzahl von drei oder mehr Knoten. Der az aks create Befehl ist standardmäßig auf drei Knoten festgelegt, wenn Sie keine Knotenanzahl angeben.
Hinzufügen eines verwalteten GPU-Knotenpools
Fügen Sie Ihrem Cluster einen linuxbasierten verwalteten GPU-Knotenpool hinzu, indem Sie den Befehl " az aks nodepool hinzufügen" verwenden . Der --enable-managed-gpu=true Parameter konfiguriert AKS zum Installieren und Verwalten des NVIDIA GPU-Treibers, des NVIDIA Kubernetes-Geräte-Plug-Ins, des DCGM-Metrikexporteurs und der KOMPONENTEN für die GPU-Integritätsüberwachung im Knotenpool.
Im folgenden Beispiel wird ein verwalteter GPU-Knotenpool mithilfe des standardmäßigen Ubuntu Linux-Betriebssystems hinzugefügt.
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
Der --node-taints sku=gpu:NoSchedule Parameter behält Nicht-GPU-Workloads außerhalb des GPU-Knotenpools bei, es sei denn, die Workloads enthalten eine entsprechende Tolerierung.
Nachdem Sie den Knotenpool erstellt haben, verwenden Sie den Befehl " az aks nodepool show ", um zu bestätigen, dass das verwaltete GPU-Profil aktiviert ist.
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}"
Die Ausgabe sollte die folgenden Werte enthalten.
{
"GpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
"migStrategy": null
}
},
"Mode": "User",
"Name": "gpunp",
"Taints": [
"sku=gpu:NoSchedule"
],
"VmSize": "Standard_NC4as_T4_v3"
}
Herstellen einer Verbindung mit dem Cluster
Um einen Kubernetes-Cluster zu verwalten, verwenden Sie den Kubernetes-Befehlszeilenclient kubectl. Wenn Sie Azure Cloud Shell verwenden, ist kubectl bereits installiert. Um kubectl lokal zu installieren, verwenden Sie den Befehl az aks install-cli.
Konfigurieren Sie
kubectl, um mithilfe des Befehls az aks get-credentials eine Verbindung mit Ihrem Kubernetes-Cluster herzustellen. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEÜberprüfen Sie die Verbindung mit Ihrem Cluster mithilfe des Befehls "kubectl get ". Dieser Befehl gibt eine Liste der Clusterknoten zurück und zeigt den Knotenpool für jeden Knoten an.
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 userStellen Sie sicher, dass Kubernetes GPU-Workloads im verwalteten GPU-Knotenpool planen können.
kubectl get nodes -l kubernetes.azure.com/agentpool=$GPU_NP -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\n"}{end}'Die Ausgabe zeigt die Anzahl der zuweisbaren GPUs für jeden Knoten im verwalteten GPU-Knotenpool an.
aks-gpunp-123456789-vmss000000 1
Aktivieren der GPU-Metriksammlung
Verwaltete GPU-Knotenpools enthalten den Exporter für DCGM-Metriken. Um die GPU-Metriken in Azure Managed Prometheus zu erfassen, aktivieren Sie zuerst den verwalteten Azure Monitor-Dienst für Prometheus auf Ihrem AKS-Cluster. Erstellen Sie dann eine ConfigMap, die das dcgmexporter Scraping-Profil im Azure Monitor-Agent ermöglicht.
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
Nachdem Sie diese ConfigMap angewendet haben, werden alle vorhandenen und neuen NVIDIA GPU-Knotenpools auf dem Cluster automatisch verschrottet. Informationen zum Anzeigen von GPU-Metriken in Azure Managed Grafana finden Sie unter GPU-Observability in Azure Kubernetes Service (AKS).
Stellen Sie die Anwendung bereit
Stellen Sie eine GPU-Workload bereit, um sicherzustellen, dass der verwaltete GPU-Knotenpool echte Anwendungen ausführen kann. In diesem Beispiel wird Ollama ausgeführt, das über eine openAI-kompatible API ein kleines Open-Source-Großsprachenmodell (Llama 3.2 1B) verwendet. Ollama basiert auf llama.cpp, das die NVIDIA T4-GPU im Knotenpool Standard_NC4as_T4_v3 unterstützt, den diese Schnellstartanleitung verwendet.
Das folgende Manifest erstellt ein Deployment und ein Service.
Deployment fordert eine GPU (nvidia.com/gpu: 1) an, enthält eine Tolerierung für den sku=gpu:NoSchedule-Taint und verwendet einen Knotenselektor, um den verwalteten GPU-Knotenpool gezielt auszuwählen. Beim Start des Containers startet er den Ollama-Server und lädt das Modell llama3.2:1b herunter, sodass der Pod bereit ist, Anfragen zu verarbeiten.
Stellen Sie die Anwendung mithilfe des folgenden Befehls bereit.
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
Note
Dieses Manifest zielt auf den gpunp Knotenpool ab. Wenn Sie einen anderen Wert für die GPU_NP Variable verwendet haben, aktualisieren Sie den kubernetes.azure.com/agentpool Knotenmarkiererwert entsprechend, bevor Sie das Manifest anwenden.
Vergewissern Sie sich mithilfe des Befehls kubectl rollout status, dass die Bereitstellung bereit ist. Der anfängliche Modelldownload kann einige Minuten dauern.
kubectl rollout status deployment/ollama --timeout=600s
Stellen Sie sicher, dass der Pod im verwalteten GPU-Knotenpool ausgeführt wird, indem Sie den Befehl "kubectl get" verwenden .
kubectl get pods -l app=ollama -o wide
Ihre Ausgabe sollte zeigen, dass der Pod auf einem Knoten im Knotenpool gpunp läuft.
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>
Testen der App
Leiten Sie einen lokalen Port mithilfe des Befehls Service an weiter. Führen Sie diesen Befehl aus, und öffnen Sie ein zweites Terminal für die verbleibenden Schritte.
kubectl port-forward svc/ollama 11434:11434
Senden Sie im zweiten Terminal mithilfe des OpenAI-kompatiblen Endpunkts für Chatabschlusse eine Eingabeaufforderung an das Modell.
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?"}]
}'
Das Modell gibt eine JSON-Antwort zurück, die eine generierte Antwort enthält, was bestätigt, dass der Workload die Inferenz über den verwalteten GPU-Knotenpool bereitstellt.
Vergewissern Sie sich, dass das Modell mithilfe des ollama ps Befehls auf der GPU geladen wird. Die PROCESSOR-Spalte zeigt 100% GPU, wenn das Modell auf dem T4 ausgeführt wird.
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
Sie können die GPU auch direkt über den Pod anzeigen, indem Sie den nvidia-smi Befehl verwenden.
kubectl exec deploy/ollama -- nvidia-smi
Wenn Sie den Test abgeschlossen haben, beenden Sie den kubectl port-forward Prozess, indem Sie STRG+C im Terminal auswählen. Die Anwendung wird entfernt, wenn Sie den Cluster im nächsten Schritt löschen.
Löschen des Clusters
Wenn Sie nicht planen, das AKS-Lernprogramm durchzuführen, bereinigen Sie unnötige Ressourcen, um Azure-Abrechnungsgebühren zu vermeiden. Sie können die Ressourcengruppe, den Containerdienst und alle zugehörigen Ressourcen entfernen, indem Sie den Befehl "az group delete" verwenden .
az group delete --name $RESOURCE_GROUP --no-wait --yes
Sie haben den AKS-Cluster mit einer vom System zugewiesenen verwalteten Identität erstellt, bei der es sich um die Standardidentitätsoption handelt, die in dieser Schnellstartanleitung verwendet wird. Die Plattform verwaltet diese Identität, sodass Sie sie nicht manuell entfernen müssen.
Nächste Schritte
In dieser Schnellstartanleitung haben Sie einen Kubernetes-Cluster bereitgestellt und dann einen linuxbasierten verwalteten GPU-Knotenpool hinzugefügt. Weitere Informationen zu verwalteten GPU-Knoten und GPU-Metriken finden Sie in den folgenden Artikeln:
- Erstellen Sie einen vollständig verwalteten GPU-Knotenpool auf Azure Kubernetes Service (AKS) (Vorschau).
- GPU-Überwachung in Azure Kubernetes Service (AKS).
Wenn Sie mehr über AKS erfahren und ein vollständiges Code-zu-Bereitstellungsbeispiel ausführen möchten, fahren Sie mit dem Kubernetes-Clusterlernprogramm fort.