Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Kubernetes Service (AKS) je spravovaná služba Kubernetes, kterou můžete použít k rychlému nasazení a správě clusterů. V tomto rychlém startu se naučíte:
- Nasaďte cluster AKS pomocí Azure CLI.
- Přidejte fond uzlů GPU se systémem Linux se zapnutými spravovanými uzly GPU.
- Ověřte, že AKS nainstaloval a nakonfiguroval softwarový zásobník GPU pro účely plánování.
Plně spravované GPU uzly jsou funkcí ve verzi Preview. Když povolíte spravované uzly GPU, AKS nainstaluje a spravuje ovladač NVIDIA GPU, modul zařízení NVIDIA pro Kubernetes, exportér metrik Data Center GPU Manager (DCGM) a komponenty pro monitorování stavu fondu uzlů GPU. Spravované uzly GPU také integrují metriky GPU v reálném čase pro ingesti do služeb Azure Managed Prometheus a spravované služby Azure Monitor pro Prometheus. Další informace najdete v tématu Vytvoření plně spravovaného fondu uzlů GPU na Azure Kubernetes Service (AKS) (Preview) a pozorovatelnosti GPU v Azure Kubernetes Service (AKS).
Note
Tento článek obsahuje postup nasazení clusteru pouze pro účely vyhodnocení. Než nasadíte cluster připravený pro produkční prostředí, seznamte se se základní referenční architekturou a zvažte, jak je v souladu s vašimi obchodními požadavky.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "tak, jak jsou" a "dle dostupnosti" a jsou vyloučeny ze smluv o úrovni služeb a z omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Než začnete
Tento rychlý start předpokládá základní znalosti konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro Službu Azure Kubernetes Service (AKS).
- Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Začínáme s Azure Cloud Shellem.
Pokud dáváte přednost tomu, aby byly referenční příkazy CLI spouštěny místně, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Docker.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Chcete-li dokončit proces ověřování, postupujte podle kroků zobrazených ve vašem terminálu. Další možnosti přihlášení najdete v tématu Ověřování v Azure pomocí Azure CLI.
Když budete vyzváni, nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Použití a správa rozšíření pomocí Azure CLI.
Spusťte az version, abyste zjistili verzi a závislé knihovny, které jsou nainstalovány. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Potřebujete Azure CLI verze 2.85.0 nebo novější. Verzi zjistíte spuštěním příkazu
az --version. Pokud potřebujete nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI. - Ujistěte se, že identita, kterou používáte k vytvoření clusteru, má odpovídající minimální oprávnění. Další informace o přístupu a identitě pro AKS najdete v tématu Možnosti přístupu a identit pro Službu Azure Kubernetes Service (AKS).
- Pokud máte více Azure předplatných, pomocí příkazu az account set vyberte příslušné ID předplatného pro fakturaci. Další informace najdete v tématu Správa Azure předplatných – Azure CLI.
- V závislosti na vašem předplatném Azure možná budete muset požádat o navýšení kvóty virtuálních procesorů pro řadu virtuálních počítačů s podporou GPU, kterou používáte v tomto rychlém startu. Další informace najdete v tématu Zvýšení kvót vCPU pro skupiny virtuálních strojů.
- Velikosti virtuálních počítačů s podporou GPU obsahují specializovaný hardware, na který se vztahují vyšší ceny a regionální dostupnost. Další informace najdete v tématu Velikosti virtuálních počítačů optimalizovaných pro GPU.
Nainstalovat rozšíření aks-preview příkazového řádku
Nainstalujte rozšíření aks-preview CLI pomocí příkazu az extension add.
az extension add --name aks-preview
Pomocí příkazu az extension update aktualizujte rozšíření, abyste měli nejnovější verzi.
az extension update --name aks-preview
Registrace funkce Preview
ManagedGPUExperiencePreview Pomocí příkazu az feature register zaregistrujte příznak funkce ve vašem předplatném.
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Zobrazení stavu Zaregistrované trvá několik minut. Pomocí příkazu az feature show ověřte stav registrace.
az feature show --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview --query properties.state
Když se zobrazí stav Registrováno, aktualizujte registraci Microsoft.ContainerService poskytovatele prostředků pomocí příkazu az provider register .
az provider register --namespace Microsoft.ContainerService
Definování proměnných prostředí
Během tohoto rychlého startu definujte následující proměnné prostředí k použití.
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"
Proměnná RANDOM_STRING ukládá náhodný 10místný řetězec. Hodnoty proměnných RESOURCE_GROUP a CLUSTER_NAME jsou zřetězeny s hodnotou RANDOM_STRING pro vytvoření jedinečných názvů. Proměnná GPU_NP ukládá název spravovaného fondu uzlů GPU. Proměnná GPU_VM_SIZE ukládá velikost virtuálního počítače s podporou GPU pro fond uzlů. Proměnná LOCATION má hodnotu westus. Tyto hodnoty proměnných můžete použít nebo si vytvořit vlastní.
echo Pomocí příkazu zobrazte hodnoty proměnných, jako je echo $RANDOM_STRING.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina pro nasazování a správu Azure prostředků. Při vytváření skupiny prostředků zadejte umístění. Toto umístění je místo, kde jsou uložena metadata skupiny prostředků a kde se vaše prostředky spouští v Azure pokud během vytváření prostředků nezadáte jinou oblast.
Pomocí příkazu az group create vytvořte skupinu prostředků.
az group create --name $RESOURCE_GROUP --location $LOCATION
Následující příklad ukazuje výsledek.
{
"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"
}
Vytvoření clusteru AKS
Pomocí příkazu az aks create vytvořte cluster AKS. Následující příklad vytvoří cluster s jedním systémovým uzlem a povolí spravovanou identitu přiřazenou systémem.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys
Když vytvoříte nový cluster, AKS automaticky vytvoří druhou skupinu prostředků pro uložení prostředků AKS. Další informace najdete v tématu Proč se v AKS vytvářejí dvě skupiny prostředků?
Cluster v tomto příkladu určuje počet uzlů jako jeden, aby se ušetřil čas a prostředky. V produkčním prostředí použijte počet uzlů se třemi nebo více uzly. Pokud az aks create nezadáte počet uzlů, příkaz se standardně nastaví na tři uzly.
Přidání spravovaného fondu uzlů GPU
Přidejte do clusteru fond uzlů GPU spravovaný linuxem pomocí příkazu az aks nodepool add . Parametr --enable-managed-gpu=true nakonfiguruje AKS pro instalaci a správu ovladače NVIDIA GPU, modulu plug-in zařízení NVIDIA Kubernetes, exportéru metrik DCGM a komponent monitorování stavu GPU ve fondu uzlů.
Následující příklad přidá spravovaný fond uzlů GPU pomocí výchozího operačního systému 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
Parametr --node-taints sku=gpu:NoSchedule zabrání tomu, aby se úlohy bez GPU spouštěly ve fondu uzlů GPU, pokud tyto úlohy neobsahují odpovídající toleranci.
Po vytvoření fondu uzlů pomocí příkazu az aks nodepool show potvrďte, že je povolený spravovaný profil 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}"
Výstup by měl obsahovat následující hodnoty.
{
"GpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
"migStrategy": null
}
},
"Mode": "User",
"Name": "gpunp",
"Taints": [
"sku=gpu:NoSchedule"
],
"VmSize": "Standard_NC4as_T4_v3"
}
Připojení ke clusteru
Pro správu Kubernetes clusteru použijte příkazový řádkový klient Kubernetes, kubectl. Pokud používáte Azure Cloud Shell, kubectl je už nainstalovaný. K místní instalaci kubectl použijte příkaz az aks install-cli .
Nakonfigurujte
kubectlpřipojení ke clusteru Kubernetes pomocí příkazu az aks get-credentials . Tento příkaz stahuje přihlašovací údaje a konfiguruje Kubernetes CLI pro jejich použití.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEPomocí příkazu kubectl get ověřte připojení ke clusteru. Tento příkaz vrátí seznam uzlů clusteru a zobrazí fond uzlů pro každý uzel.
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 userOvěřte, že Kubernetes může plánovat úlohy GPU ve spravovaném fondu uzlů 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}'Výstup zobrazuje počet akatebilních GPU pro každý uzel ve spravovaném fondu uzlů GPU.
aks-gpunp-123456789-vmss000000 1
Povolení shromažďování metrik GPU
Fondy spravovaných uzlů GPU zahrnují exportér metrik DCGM. Chcete-li načíst metriky GPU do Azure Managed Prometheus, nejprve ve svém clusteru AKS povolte spravovanou službu Azure Monitor pro Prometheus. Pak vytvořte mapu ConfigMap, která v agentu Azure Monitor povolí profil dcgmexporter pro scraping.
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
Po použití této mapy ConfigMap se všechny existující a nové fondy uzlů NVIDIA GPU v clusteru automaticky sešrotují. Pokud chcete zobrazit metriky GPU v Azure Managed Grafana, podívejte se na pozorovatelnost GPU v Azure Kubernetes Service (AKS).
Nasazení aplikace
Nasaďte úlohu GPU, abyste potvrdili, že spravovaný fond uzlů GPU může spouštět skutečné aplikace. Tento příklad spouští Ollama, který obsluhuje malý opensourcový rozsáhlý jazykový model (Llama 3.2 1B) prostřednictvím rozhraní API kompatibilního s OpenAI. Ollama je postaven na llama.cpp, který podporuje GPU NVIDIA T4 ve Standard_NC4as_T4_v3 fondu uzlů, který tento rychlý start používá.
Následující manifest vytvoří objekt Deployment a objekt Service.
Deployment požaduje jednu GPU (nvidia.com/gpu: 1), zahrnuje toleranci pro taint sku=gpu:NoSchedule a používá selektor uzlů, který cílí na spravovaný fond GPU uzlů. Když se kontejner spustí, spustí server Ollama a stáhne model llama3.2:1b, aby byl pod připravený vyřizovat požadavky.
Nasaďte aplikaci pomocí následujícího příkazu.
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
Tento manifest je určen pro skupinu uzlů gpunp. Pokud jste pro GPU_NP proměnnou použili jinou hodnotu, aktualizujte hodnotu selektoru kubernetes.azure.com/agentpool uzlu tak, aby odpovídala před použitím manifestu.
Pomocí příkazu kubectl rollout status ověřte, že je nasazení připraveno. Stažení počátečního modelu může trvat několik minut.
kubectl rollout status deployment/ollama --timeout=600s
Pomocí příkazu kubectl get ověřte, že pod běží ve spravovaném fondu uzlů GPU.
kubectl get pods -l app=ollama -o wide
Výstup by měl zobrazit pod spuštěný na některém uzlu ve fondu uzlů 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>
Testování aplikace
Přesměrujte místní port na Service port pomocí příkazu kubectl port-forward . Ponechte tento příkaz spuštěný a otevřete druhý terminál pro zbývající kroky.
kubectl port-forward svc/ollama 11434:11434
V druhém terminálu odešlete do modelu výzvu pomocí koncového bodu dokončení chatu kompatibilního s 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?"}]
}'
Model vrátí odpověď JSON obsahující vygenerovanou odpověď, která potvrzuje, že úloha obsluhuje odvozování ze spravovaného fondu uzlů GPU.
Pomocí příkazu ověřte, že je model načtený do GPU ollama ps . Sloupec PROCESSOR ukazuje 100% GPU , kdy model běží na 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
Gpu můžete také zobrazit přímo uvnitř podu nvidia-smi pomocí příkazu.
kubectl exec deploy/ollama -- nvidia-smi
Po dokončení testování proces zastavte kubectl port-forward tak, že v terminálu vyberete Ctrl+C . Aplikace se odebere při odstranění clusteru v dalším kroku.
Odstranění clusteru
Pokud nemáte v plánu kurz AKS, vyčistěte nepotřebné prostředky, abyste se vyhnuli poplatkům za fakturaci Azure. Pomocí příkazu az group delete můžete odebrat skupinu prostředků, službu kontejneru a všechny související prostředky.
az group delete --name $RESOURCE_GROUP --no-wait --yes
Vytvořili jste cluster AKS se spravovanou identitou přiřazenou systémem, což je výchozí možnost identity použitá v tomto rychlém startu. Platforma spravuje tuto identitu, takže ji nemusíte ručně odstraňovat.
Další kroky
V tomto rychlém startu jste nasadili cluster Kubernetes a pak jste přidali fond uzlů GPU spravovaný linuxem. Další informace o spravovaných uzlech GPU a metrikách GPU najdete v následujících článcích:
- Na Azure Kubernetes Service (AKS) (Preview) vytvořte plně spravovaný fond uzlů GPU.
- Pozorovatelnost GPU v Azure Kubernetes Service (AKS)
Chcete-li se dozvědět více o AKS a udělat úplný příklad od kódu po nasazení, pokračujte do kurzu clusteru Kubernetes.