Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Kubernetes Service (AKS) is een beheerde Kubernetes-service die u kunt gebruiken om snel clusters te implementeren en te beheren. In deze snelstart leert u de volgende zaken:
- Implementeer een AKS-cluster met behulp van Azure CLI.
- Voeg een gpu-knooppuntgroep op basis van Linux toe waarvoor beheerde GPU-knooppunten zijn ingeschakeld.
- Controleer of AKS de GPU-softwarestack voor planning heeft geïnstalleerd en geconfigureerd.
Volledig beheerde GPU-knooppunten zijn een preview-functie. Wanneer u beheerde GPU-knooppunten inschakelt, installeert en beheert AKS het NVIDIA GPU-stuurprogramma, de NVIDIA Kubernetes-apparaatinvoegtoepassing, de metrische gegevensexporteur van Data Center GPU Manager (DCGM) en gpu-statuscontroleonderdelen voor de GPU-knooppuntgroep. Beheerde GPU-knooppunten bevatten ook realtime GPU-metrieken voor opname door Azure Managed Prometheus en Azure Monitor managed service for Prometheus. Zie Een volledig beheerde GPU-knooppuntgroep maken op Azure Kubernetes Service (AKS) (preview) en GPU-waarneembaarheid in Azure Kubernetes Service (AKS) voor meer informatie.
Note
Dit artikel bevat stappen voor het implementeren van een cluster alleen voor evaluatiedoeleinden. Voordat u een cluster implementeert dat gereed is voor productie, moet u vertrouwd raken met de referentiearchitectuur van de basislijn om na te gaan hoe dit overeenkomt met uw bedrijfsvereisten.
Important
AKS preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning naar best vermogen. Zodoende zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Voordat u begint
In deze snelstart wordt ervan uitgegaan dat u een basisbegrip hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor Azure Kubernetes Service (AKS) voor meer informatie.
- Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als u CLI-referentieopdrachten liever lokaal uitvoert, installeer de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u hierom wordt gevraagd, installeert u de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
- U hebt Azure CLI versie 2.85.0 of hoger nodig. Voer
az --versionuit om de versie te vinden. Als u Azure CLI wilt installeren of upgraden, raadpleeg het artikel Install Azure CLI. - Zorg ervoor dat de identiteit die u gebruikt om uw cluster te maken de juiste minimale machtigingen heeft. Zie Toegangs- en identiteitsopties voor Azure Kubernetes Service (AKS) voor meer informatie over toegang en identiteit voor AKS.
- Als u meerdere Azure abonnementen hebt, selecteert u de juiste abonnements-id voor facturering met behulp van de opdracht az account set. Zie Azure abonnementen beheren - Azure CLI voor meer informatie.
- Afhankelijk van uw Azure-abonnement moet u mogelijk een vCPU-quotumverhoging aanvragen voor de VM-serie met GPU-functionaliteit die u in deze quickstart gebruikt. Zie Vm-family vCPU-quota verhogen voor meer informatie.
- VM-grootten met GPU-functionaliteit bevatten speciale hardware waarvoor hogere prijzen en regionale beschikbaarheid gelden. Zie voor meer informatie de grootten van de voor GPU geoptimaliseerde virtuele machines.
aks-preview De CLI-extensie installeren
Installeer de aks-preview CLI-extensie met behulp van de opdracht az extension add .
az extension add --name aks-preview
Werk de extensie bij om ervoor te zorgen dat u de nieuwste versie hebt met behulp van de opdracht az extension update .
az extension update --name aks-preview
De preview-functie registreren
Registreer de ManagedGPUExperiencePreview functievlag in uw abonnement met behulp van de opdracht az feature register .
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven. Controleer de registratiestatus met behulp van de opdracht az feature show .
az feature show --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview --query properties.state
Wanneer de status Geregistreerd wordt weergegeven, vernieuwt u de registratie van de Microsoft.ContainerService resourceprovider met behulp van de opdracht az provider register .
az provider register --namespace Microsoft.ContainerService
Omgevingsvariabelen definiëren
Definieer de volgende omgevingsvariabelen voor gebruik in deze quickstart.
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"
De RANDOM_STRING variabele slaat een willekeurige tekenreeks van 10 cijfers op. De RESOURCE_GROUP en CLUSTER_NAME variabele waarden worden samengevoegd met de RANDOM_STRING waarde om unieke namen te maken. De GPU_NP variabele slaat de naam op voor de beheerde GPU-knooppuntgroep. De GPU_VM_SIZE variabele slaat de VM-grootte met GPU op voor de knooppuntgroep. De LOCATION variabele heeft de waarde westus. U kunt deze variabelewaarden gebruiken of uw eigen waarden maken. Gebruik de echo opdracht om variabele waarden weer te geven, zoals echo $RANDOM_STRING.
Een brongroep maken
Een Azure resourcegroep is een logische groep voor het implementeren en beheren van Azure resources. Wanneer u een resourcegroep maakt, geeft u een locatie op. Op deze locatie worden de metagegevens van de resourcegroep opgeslagen en waar uw resources worden uitgevoerd in Azure als u geen andere regio opgeeft tijdens het maken van resources.
Gebruik de opdracht az group create om een resourcegroep te maken.
az group create --name $RESOURCE_GROUP --location $LOCATION
In het volgende voorbeeld ziet u het resultaat.
{
"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"
}
Een AKS-cluster maken
Gebruik de opdracht az aks create om een AKS-cluster te maken. In het volgende voorbeeld wordt een cluster met één systeemknooppunt gemaakt en wordt een door het systeem toegewezen beheerde identiteit ingeschakeld.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys
Wanneer u een nieuw cluster maakt, maakt AKS automatisch een tweede resourcegroep om de AKS-resources op te slaan. Zie voor meer informatie Waarom worden er twee resourcegroepen gemaakt met AKS?
In het cluster in dit voorbeeld wordt een aantal van één knooppunt opgegeven om tijd en resources te besparen. Gebruik in een productieomgeving een aantal knooppunten van drie of meer knooppunten. De az aks create opdracht wordt standaard ingesteld op drie knooppunten als u geen aantal knooppunten opgeeft.
Een beheerde GPU-knooppuntgroep toevoegen
Voeg een op Linux gebaseerde beheerde GPU-knooppuntgroep toe aan uw cluster met behulp van de opdracht az aks nodepool add . De --enable-managed-gpu=true parameter configureert AKS voor het installeren en beheren van het NVIDIA GPU-stuurprogramma, nvidia Kubernetes-apparaatinvoegtoepassing, DCGM metrics exporter en GPU-statuscontroleonderdelen in de knooppuntgroep.
In het volgende voorbeeld wordt een beheerde GPU-knooppuntgroep toegevoegd met behulp van het standaardbesturingssysteem 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
Met --node-taints sku=gpu:NoSchedule de parameter blijven niet-GPU-workloads buiten de GPU-knooppuntgroep, tenzij de workloads een overeenkomende tolerantie bevatten.
Nadat u de knooppuntgroep hebt gemaakt, gebruikt u de opdracht az aks nodepool show om te bevestigen dat het beheerde GPU-profiel is ingeschakeld.
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}"
De uitvoer moet de volgende waarden bevatten.
{
"GpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
"migStrategy": null
}
},
"Mode": "User",
"Name": "gpunp",
"Taints": [
"sku=gpu:NoSchedule"
],
"VmSize": "Standard_NC4as_T4_v3"
}
Verbinding maken met het cluster
Als u een Kubernetes-cluster wilt beheren, gebruikt u de Kubernetes-opdrachtregelclient kubectl. Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd. Als u lokaal wilt installeren kubectl , gebruikt u de opdracht az aks install-cli .
Configureer
kubectlom verbinding te maken met uw Kubernetes-cluster met behulp van de opdracht az aks get-credentials . Met deze opdracht worden inloggegevens gedownload en wordt de Kubernetes-CLI geconfigureerd om deze te gebruiken.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEControleer de verbinding met uw cluster met behulp van de opdracht kubectl get . Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd en wordt de knooppuntgroep voor elk knooppunt weergegeven.
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 userControleer of Kubernetes GPU-workloads kan plannen in de beheerde GPU-knooppuntgroep.
kubectl get nodes -l kubernetes.azure.com/agentpool=$GPU_NP -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\n"}{end}'In de uitvoer ziet u het aantal toegewezen GPU's voor elk knooppunt in de beheerde GPU-knooppuntgroep.
aks-gpunp-123456789-vmss000000 1
Verzameling van GPU-metrieken inschakelen
Beheerde GPU-knooppuntgroepen omvatten de dcGM-metrische gegevensexporteur. Als u de GPU-metrische gegevens wilt opnemen in Azure Beheerde Prometheus, schakelt u eerst Azure Monitor beheerde service voor Prometheus in uw AKS-cluster in. Maak vervolgens een ConfigMap waarmee het dcgmexporter scrapingprofiel in de Azure Monitor-agent wordt ingeschakeld.
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
Nadat u deze ConfigMap hebt toegepast, worden alle bestaande en nieuwe NVIDIA GPU-knooppuntgroepen in het cluster automatisch verwijderd. Zie GPU-waarneembaarheid in Azure Kubernetes Service (AKS) om metrische GPU-gegevens in Azure Managed Grafana weer te geven.
De toepassing implementeren
Implementeer een GPU-workload om te bevestigen dat de beheerde GPU-knooppuntgroep echte toepassingen kan uitvoeren. In dit voorbeeld wordt Ollama uitgevoerd, dat een klein opensource groot taalmodel (Llama 3.2 1B) bedient via een openAI-compatibele API. Ollama is gebouwd op llama.cpp, die de NVIDIA T4 GPU ondersteunt in de Standard_NC4as_T4_v3 knooppuntgroep die in deze quickstart wordt gebruikt.
In het volgende manifest wordt een Deployment en een Service gemaakt. De Deployment vragen één GPU aan (nvidia.com/gpu: 1), bevatten een toleratie voor de taint sku=gpu:NoSchedule en gebruiken een knooppuntselector om zich te richten op de beheerde GPU-knooppuntgroep. Wanneer de container wordt gestart, wordt de Ollama-server gestart en wordt het llama3.2:1b model opgehaald, zodat de pod klaar is om aanvragen te verwerken.
Implementeer de toepassing met behulp van de volgende opdracht.
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
Dit manifest is gericht op de gpunp knooppuntgroep. Als u een andere waarde voor de GPU_NP variabele hebt gebruikt, werkt u de waarde van de kubernetes.azure.com/agentpool knooppuntkiezer bij zodat deze overeenkomt voordat u het manifest toepast.
Controleer of de implementatie gereed is met behulp van de kubectl-implementatiestatusopdracht . Het downloaden van het eerste model kan enkele minuten duren.
kubectl rollout status deployment/ollama --timeout=600s
Controleer of de pod wordt uitgevoerd in de beheerde GPU-knooppuntgroep met behulp van de opdracht kubectl get .
kubectl get pods -l app=ollama -o wide
In de uitvoer ziet u dat de pod draait op een knooppunt in de gpunp nodegroep.
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>
De toepassing testen
Stuur een lokale poort door naar de Service poort met behulp van de opdracht kubectl port-forward . Houd deze opdracht actief en open een tweede terminal voor de resterende stappen.
kubectl port-forward svc/ollama 11434:11434
Verzend in de tweede terminal een prompt naar het model met behulp van het OpenAI-compatibele eindpunt voor chatvoltooiingen.
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?"}]
}'
Het model geeft een JSON-reactie terug die een gegenereerd antwoord bevat, waarmee wordt bevestigd dat de workload inferentie uitvoert via de beheerde GPU-nodegroep.
Controleer of het model is geladen op de GPU met behulp van de ollama ps opdracht. De PROCESSOR kolom toont 100% GPU wanneer het model op de T4 wordt uitgevoerd.
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
U kunt de GPU ook rechtstreeks vanuit de pod bekijken met behulp van de nvidia-smi opdracht.
kubectl exec deploy/ollama -- nvidia-smi
Wanneer u klaar bent met testen, stopt u het kubectl port-forward proces door Ctrl+C in de terminal te selecteren. De toepassing wordt verwijderd wanneer u het cluster in de volgende stap verwijdert.
Het cluster verwijderen
Als u niet van plan bent om de AKS-zelfstudie uit te voeren, moet u overbodige resources opschonen om Azure-factureringskosten te voorkomen. U kunt de resourcegroep, containerservice en alle gerelateerde resources verwijderen met behulp van de opdracht az group delete .
az group delete --name $RESOURCE_GROUP --no-wait --yes
U hebt het AKS-cluster gemaakt met een door het systeem toegewezen beheerde identiteit. Dit is de standaardidentiteitsoptie die in deze quickstart wordt gebruikt. Het platform beheert deze identiteit, zodat u deze niet handmatig hoeft te verwijderen.
Volgende stappen
In deze quickstart hebt u een Kubernetes-cluster geïmplementeerd en vervolgens een op Linux gebaseerde beheerde GPU-knooppuntgroep toegevoegd. Zie de volgende artikelen voor meer informatie over beheerde GPU-knooppunten en GPU-metrische gegevens:
- Maak een volledig beheerde GPU-knooppuntgroep op Azure Kubernetes Service (AKS) (preview).
- GPU-waarneembaarheid in Azure Kubernetes Service (AKS).
Als u meer wilt weten over AKS en een volledig voorbeeld van code-naar-implementatie wilt uitvoeren, gaat u verder met de zelfstudie over het Kubernetes-cluster.