Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Kubernetes Service (AKS), kümeleri hızla dağıtmak ve yönetmek için kullanabileceğiniz yönetilen bir Kubernetes hizmetidir. Bu hızlı başlangıçta şunların nasıl yapılacağını öğreneceksiniz:
- Azure CLI kullanarak AKS kümesi dağıtma.
- Yönetilen GPU düğümlerinin etkinleştirildiği Linux tabanlı bir GPU düğüm havuzu ekleyin.
- AKS'nin GPU yazılım yığınını zamanlama için yükleyip yapılandırdığını doğrulayın.
Tam olarak yönetilen GPU düğümleri bir önizleme özelliğidir. Yönetilen GPU düğümlerini etkinleştirdiğinizde AKS, GPU düğüm havuzu için NVIDIA GPU sürücüsünü, NVIDIA Kubernetes cihaz eklentisini, Veri Merkezi GPU Yöneticisi (DCGM) ölçümlerini veren ve GPU sistem durumu izleme bileşenlerini yükler ve yönetir. Yönetilen GPU düğümleri, gerçek zamanlı GPU ölçümlerini Azure Managed Prometheus ve Prometheus için Azure İzleyici yönetilen hizmeti tarafından alınmak üzere de entegre eder. Daha fazla bilgi için bkz. Azure Kubernetes Service (AKS) üzerinde tam olarak yönetilen GPU düğüm havuzu oluşturma (önizleme) ve Azure Kubernetes Service (AKS)'de GPU gözlemlenebilirliği.
Note
Bu makale, kümeyi yalnızca değerlendirme amacıyla dağıtma adımlarını içerir. Üretime hazır bir kümeyi dağıtmadan önce, iş gereksinimlerinizle nasıl uyumlu olduğunu göz önünde bulundurmak için temel başvuru mimarisini öğrenin.
Important
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Başlamadan önce
Bu hızlı başlangıç, Kubernetes kavramlarının temel olarak bilindiğini varsayar. Daha fazla bilgi için Azure Kubernetes Service (AKS) için Kubernetes temel kavramları sayfasına bakınız.
- Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- Azure CLI sürüm 2.85.0 veya üzeri gerekir. Sürümü bulmak için
az --versionkomutunu çalıştırın. Azure CLI'yı yüklemeniz veya yükseltmeniz gerekiyorsa bkz . Azure CLI'yı yükleme. - Kümenizi oluşturmak için kullandığınız kimliğin uygun minimum izinlere sahip olduğundan emin olun. AKS için erişim ve kimlik hakkında daha fazla bilgi için Azure Kubernetes Hizmeti (AKS) için erişim ve kimlik seçenekleri başlığını inceleyin.
- Birden çok Azure aboneliğiniz varsa az account set komutunu kullanarak faturalama için uygun abonelik kimliğini seçin. Daha fazla bilgi için bkz. Azure abonelikleri yönetme - Azure CLI.
- Azure aboneliğinize bağlı olarak, bu hızlı başlangıçta kullandığınız GPU özellikli VM ailesi için vCPU kota artışı istemeniz gerekebilir. Daha fazla bilgi için bkz. VM ailesi vCPU kotalarını artırma.
- GPU özellikli VM boyutları, daha yüksek fiyatlandırma ve bölgesel kullanılabilirliğe tabi özel donanımlar içerir. Daha fazla bilgi için bkz. GPU için iyileştirilmiş sanal makine boyutları.
CLI uzantısını aks-preview yükleme
az extension add komutunu kullanarak aks-preview CLI uzantısını yükleyin.
az extension add --name aks-preview
az extension update komutunu kullanarak en son sürüme sahip olduğunuzdan emin olmak için uzantıyı güncelleştirin .
az extension update --name aks-preview
Önizleme özelliğini kaydetme
ManagedGPUExperiencePreview az feature register komutunu kullanarak aboneliğinize özellik bayrağını kaydedin.
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer. az feature show komutunu kullanarak kayıt durumunu doğrulayın.
az feature show --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview --query properties.state
Durum Kayıtlı olarak gösterildiğinde az provider register komutunu kullanarak kaynak sağlayıcısınınMicrosoft.ContainerService kaydını yenileyin.
az provider register --namespace Microsoft.ContainerService
Ortam değişkenlerini tanımlama
Bu hızlı başlangıç boyunca kullanmak üzere aşağıdaki ortam değişkenlerini tanımlayın.
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 değişkeni rastgele 10 basamaklı bir dize depolar.
RESOURCE_GROUP ve CLUSTER_NAME değişken değerleri, benzersiz adlar oluşturmak için RANDOM_STRING değeriyle birleştirilir. değişkeni, GPU_NP yönetilen GPU düğüm havuzunun adını depolar. değişkeni, GPU_VM_SIZE düğüm havuzu için GPU özellikli VM boyutunu depolar. değişkeni westusLOCATION değerine sahiptir. Bu değişken değerlerini kullanabilir veya kendi değerlerinizi oluşturabilirsiniz.
echo gibi echo $RANDOM_STRINGdeğişken değerlerini görüntülemek için komutunu kullanın.
Bir kaynak grubu oluşturun
Azure kaynak grubu, Azure kaynaklarını dağıtmaya ve yönetmeye yönelik bir mantıksal grupdur. Kaynak grubu oluştururken bir konum belirtin. Bu konum, kaynak grubu meta verilerinin depolandığı ve kaynak oluşturma sırasında başka bir bölge belirtmezseniz kaynaklarınızın Azure çalıştığı yerdir.
Kaynak grubu oluşturmak için az group create komutunu kullanın.
az group create --name $RESOURCE_GROUP --location $LOCATION
Aşağıdaki örnekte sonuç gösterilmektedir.
{
"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 kümesi oluşturma
AKS kümesi oluşturmak için az aks create komutunu kullanın. Aşağıdaki örnek, bir sistem düğümüne sahip bir küme oluşturur ve sistem tarafından atanan yönetilen kimliği etkinleştirir.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys
Yeni bir küme oluşturduğunuzda AKS, AKS kaynaklarını depolamak için otomatik olarak ikinci bir kaynak grubu oluşturur. Daha fazla bilgi için bkz. AKS ile neden iki kaynak grubu oluşturulur?
Bu örnekteki küme, zamandan ve kaynaklardan tasarruf etmek için bir düğüm sayısını belirtir. Üretim ortamında üç veya daha fazla düğümden oluşan bir düğüm sayısı kullanın. Bir az aks create düğüm sayısı belirtmezseniz komut varsayılan olarak üç düğüm olarak belirlenir.
Yönetilen GPU düğüm havuzu ekleme
az aks nodepool add komutunu kullanarak kümenize Linux tabanlı yönetilen GPU düğüm havuzu ekleyin.
--enable-managed-gpu=true parametresi NVIDIA GPU sürücüsünü, NVIDIA Kubernetes cihaz eklentisini, DCGM ölçümlerini vereni ve GPU sistem durumu izleme bileşenlerini düğüm havuzuna yükleyip yönetecek şekilde AKS'yi yapılandırmaktadır.
Aşağıdaki örnek, varsayılan Ubuntu Linux işletim sistemini kullanarak yönetilen bir GPU düğüm havuzu ekler.
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
parametresi, --node-taints sku=gpu:NoSchedule iş yükleri eşleşen bir tolerans içermediği sürece GPU olmayan iş yüklerini GPU düğümü havuzundan uzak tutar.
Düğüm havuzunu oluşturduktan sonra, yönetilen GPU profilinin etkinleştirildiğini onaylamak için az aks nodepool show komutunu kullanın.
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}"
Çıkışınız aşağıdaki değerleri içermelidir.
{
"GpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
"migStrategy": null
}
},
"Mode": "User",
"Name": "gpunp",
"Taints": [
"sku=gpu:NoSchedule"
],
"VmSize": "Standard_NC4as_T4_v3"
}
Kümeye bağlanma
Bir Kubernetes kümesini yönetmek için, Kubernetes komut satırı istemcisi olan kubectl'i kullanın. Azure Cloud Shell kullanıyorsanız kubectl zaten yüklüdür.
kubectl yerel olarak yüklemek için az aks install-cli komutunu kullanın.
az aks get-credentials komutunu kullanarak Kubernetes kümenize bağlanacak şekilde yapılandırın
kubectl. Bu komut, kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırır.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEkubectl get komutunu kullanarak kümenize bağlantıyı doğrulayın. Bu komut, küme düğümlerinin listesini döndürür ve her düğüm için düğüm havuzunu gösterir.
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 userKubernetes'in yönetilen GPU düğüm havuzunda GPU iş yüklerini zamanlayabildiğini doğrulayın.
kubectl get nodes -l kubernetes.azure.com/agentpool=$GPU_NP -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\n"}{end}'Bu çıktı, yönetilen GPU düğüm havuzundaki her düğüm için ayrılabilir GPU sayısını gösterir.
aks-gpunp-123456789-vmss000000 1
GPU ölçümleri toplamayı etkinleştirme
Yönetilen GPU düğüm havuzları, DCGM ölçüm dışa aktarıcısını içerir. GPU ölçümlerini Azure Managed Prometheus'a almak için önce AKS kümenizde Prometheus için Azure İzleyici yönetilen hizmetini etkinleştirin. Ardından, Azure İzleyici aracısında dcgmexporter kazıma profilini etkinleştiren bir ConfigMap oluşturun.
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
Bu ConfigMap'i uyguladıktan sonra kümedeki tüm mevcut ve yeni NVIDIA GPU düğüm havuzları otomatik olarak kazınmış olur. gpu ölçümlerini Azure Managed Grafana görüntülemek için bkz. Azure Kubernetes Service (AKS) gpu gözlemlenebilirliği.
Uygulamayı dağıt
Yönetilen GPU düğüm havuzunun gerçek uygulamaları çalıştırabildiğini onaylamak için bir GPU iş yükü dağıtın. Bu örnek, OpenAI uyumlu bir API aracılığıyla küçük bir açık kaynak büyük dil modeline (Llama 3.2 1B) hizmet veren Ollama'yı çalıştırır. Ollama, bu hızlı başlangıcın kullandığı Standard_NC4as_T4_v3 düğüm havuzundaki NVIDIA T4 GPU’yu destekleyen llama.cpp üzerine kuruludur.
Aşağıdaki bildirim bir Deployment ve Serviceoluşturur.
Deployment, bir GPU (nvidia.com/gpu: 1) ister, sku=gpu:NoSchedule taint’i için bir toleration içerir ve yönetilen GPU düğüm havuzunu hedeflemek için bir düğüm seçici kullanır. Kapsayıcı başlatıldığında, Ollama sunucusunu başlatır ve podun istekleri karşılamaya hazır olması için llama3.2:1b modelini çeker.
Aşağıdaki komutu kullanarak uygulamayı dağıtın.
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
Bu bildirim düğüm havuzunu hedefler gpunp . Değişken için GPU_NP farklı bir değer kullandıysanız, bildirimi uygulamadan önce düğüm seçici değerini eşleşecek şekilde güncelleştirin kubernetes.azure.com/agentpool .
kubectl rollout status komutunu kullanarak dağıtımın hazır olduğunu onaylayın. İlk model indirme işlemi birkaç dakika sürebilir.
kubectl rollout status deployment/ollama --timeout=600s
kubectl get komutunu kullanarak pod'un yönetilen GPU düğüm havuzunda çalıştığını doğrulayın.
kubectl get pods -l app=ollama -o wide
Çıktınız, podun gpunp düğüm havuzundaki bir düğüm üzerinde çalıştığını göstermelidir.
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>
Uygulamayı test et
Service komutunu kullanarak yerel bağlantı noktasını öğesine yönlendirin. Bu komutu çalışır durumda tutun ve kalan adımlar için ikinci bir terminal açın.
kubectl port-forward svc/ollama 11434:11434
İkinci terminalde, OpenAI uyumlu sohbet tamamlamaları uç noktasını kullanarak modele bir istem gönderin.
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, iş yükünün yönetilen GPU düğümü havuzundan çıkarım sunduğunu onaylayan, oluşturulan bir yanıt içeren bir JSON yanıtı döndürür.
komutunu kullanarak ollama ps modelin GPU'ya yüklendiğini onaylayın.
PROCESSOR sütunu, model T4 üzerinde çalıştığında 100% GPU gösterir.
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
Ayrıca komutunu kullanarak nvidia-smi GPU'ya doğrudan pod içinden de bakabilirsiniz.
kubectl exec deploy/ollama -- nvidia-smi
Testi bitirdiğinizde, terminalinde kubectl port-forwardCtrl+C tuşlarına basarak işlemi durdurun. Sonraki adımda kümeyi sildiğinizde uygulama kaldırılır.
Kümeyi sil
AKS öğreticisini yapmayı planlamıyorsanız, Azure faturalama ücretlerinden kaçınmak için gereksiz kaynakları temizleyin. az group delete komutunu kullanarak kaynak grubunu, kapsayıcı hizmetini ve tüm ilgili kaynakları kaldırabilirsiniz.
az group delete --name $RESOURCE_GROUP --no-wait --yes
AKS kümesini, bu hızlı başlangıçta kullanılan varsayılan kimlik seçeneği olan sistem tarafından atanan yönetilen kimlikle oluşturdunuz. Platform bu kimliği yönetir, böylece bu kimliği el ile kaldırmanız gerekmez.
Sonraki Adımlar
Bu hızlı başlangıçta bir Kubernetes kümesi dağıttınız ve ardından Linux tabanlı yönetilen GPU düğüm havuzu eklediniz. Yönetilen GPU düğümleri ve GPU ölçümleri hakkında daha fazla bilgi için aşağıdaki makalelere bakın:
- Azure Kubernetes Service (AKS) (önizleme) üzerinde tam olarak yönetilen bir GPU düğüm havuzu oluşturun.
- Azure Kubernetes Service (AKS)'da GPU gözlemlenebilirliği.
AKS ile ilgili daha fazla bilgi edinmek ve tam bir koddan dağıtıma örnek uygulamak için Kubernetes kümesi kılavuzuna geçin.