Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Kubernetes Service (AKS) adalah layanan Kubernetes terkelola yang dapat Anda gunakan untuk menyebarkan dan mengelola kluster dengan cepat. Dalam panduan memulai cepat ini, Anda mempelajari cara:
- Sebarkan kluster AKS dengan menggunakan Azure CLI.
- Tambahkan kumpulan simpul GPU berbasis Linux dengan simpul GPU terkelola diaktifkan.
- Pastikan bahwa AKS telah menginstal dan mengonfigurasi stack perangkat lunak GPU untuk penjadwalan.
Node GPU yang dikelola sepenuhnya merupakan fitur pratinjau. Saat Anda mengaktifkan simpul GPU terkelola, AKS menginstal dan mengelola driver GPU NVIDIA, plugin perangkat NVIDIA Kubernetes, pengekspor metrik Data Center GPU Manager (DCGM), dan komponen pemantauan kesehatan GPU untuk kumpulan simpul GPU. Node GPU terkelola juga mengintegrasikan metrik GPU real time untuk penyerapan di Azure Managed Prometheus dan layanan terkelola Azure Monitor untuk Prometheus. Untuk informasi selengkapnya, lihat Membuat kumpulan simpul GPU yang dikelola sepenuhnya pada Azure Kubernetes Service (AKS) (pratinjau) dan pengamatan GPU di Azure Kubernetes Service (AKS).
Note
Artikel ini mencakup langkah-langkah untuk menyebarkan kluster hanya untuk tujuan evaluasi. Sebelum Anda menyebarkan kluster siap produksi, biasakan diri Anda dengan arsitektur referensi dasar untuk mempertimbangkan bagaimana kluster tersebut selaras dengan kebutuhan bisnis Anda.
Important
Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Fitur pratinjau AKS sebagian didukung oleh dukungan pelanggan sebatas upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:
Sebelum Anda mulai
Panduan memulai cepat ini mengasumsikan bahwa Anda memiliki pemahaman dasar tentang konsep Kubernetes. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
- Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan az version untuk menemukan versi dan pustaka dependen yang terinstal. Untuk meng-upgrade ke versi terbaru, jalankan az upgrade.
- Anda memerlukan Azure CLI versi 2.85.0 atau yang lebih baru. Jalankan
az --versionuntuk mencari tahu versinya. Jika Anda perlu menginstal atau meningkatkan Azure CLI, lihat Menginstal Azure CLI. - Pastikan bahwa identitas yang Anda gunakan untuk membuat kluster Anda memiliki izin minimum yang sesuai. Untuk informasi selengkapnya tentang akses dan identitas untuk AKS, lihat Opsi akses dan identitas untuk Azure Kubernetes Service (AKS).
- Jika Anda memiliki beberapa langganan Azure, pilih ID langganan yang sesuai untuk penagihan dengan menggunakan perintah az account set. Untuk informasi selengkapnya, lihat Cara mengelola langganan Azure - Azure CLI.
- Tergantung pada langganan Azure Anda, Anda mungkin perlu mengajukan permintaan peningkatan kuota vCPU untuk keluarga VM yang mendukung GPU yang Anda gunakan dalam panduan mulai cepat ini. Untuk informasi selengkapnya, lihat Meningkatkan kuota vCPU VM-family.
- Ukuran VM dengan dukungan GPU berisi perangkat keras khusus yang tunduk pada harga yang lebih tinggi dan ketersediaan regional. Untuk informasi selengkapnya, lihat Ukuran komputer virtual yang dioptimalkan GPU.
aks-preview Menginstal ekstensi CLI
aks-preview Instal ekstensi CLI dengan menggunakan perintah az extension add.
az extension add --name aks-preview
Perbarui ekstensi untuk memastikan Anda memiliki versi terbaru dengan menggunakan perintah az extension update .
az extension update --name aks-preview
Mendaftarkan fitur pratinjau
ManagedGPUExperiencePreview Daftarkan bendera fitur di langganan Anda dengan menggunakan perintah az feature register.
az feature register --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview
Dibutuhkan beberapa menit agar status menampilkan Terdaftar. Verifikasi status pendaftaran dengan menggunakan perintah az feature show .
az feature show --namespace Microsoft.ContainerService --name ManagedGPUExperiencePreview --query properties.state
Saat status menunjukkan Terdaftar, segarkan pendaftaran penyedia sumber daya Microsoft.ContainerService dengan menggunakan perintah az provider register.
az provider register --namespace Microsoft.ContainerService
Menentukan variabel lingkungan
Tentukan variabel lingkungan berikut untuk digunakan di seluruh panduan kilat ini.
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"
Variabel RANDOM_STRING menyimpan string 10 digit acak. Nilai variabel RESOURCE_GROUP dan CLUSTER_NAME dikombinasikan dengan nilai RANDOM_STRING untuk membuat nama unik. Variabel GPU_NP menyimpan nama untuk kumpulan simpul GPU terkelola. Variabel GPU_VM_SIZE menyimpan ukuran VM yang diaktifkan GPU untuk kumpulan simpul. Variabel LOCATION memiliki nilai westus. Anda dapat menggunakan nilai variabel ini atau membuat nilai Anda sendiri.
echo Gunakan perintah untuk melihat nilai variabel seperti echo $RANDOM_STRING.
Buat grup sumber daya
Grup sumber daya Azure adalah grup logis untuk menyebarkan dan mengelola sumber daya Azure. Saat Anda membuat grup sumber daya, tentukan lokasi. Lokasi ini adalah tempat metadata grup sumber daya disimpan dan tempat sumber daya Anda berjalan di Azure jika Anda tidak menentukan wilayah lain selama pembuatan sumber daya.
Gunakan perintah az group create untuk membuat grup sumber daya.
az group create --name $RESOURCE_GROUP --location $LOCATION
Contoh berikut menunjukkan hasilnya.
{
"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"
}
Membuat kluster AKS
Gunakan perintah az aks create untuk membuat kluster AKS. Contoh berikut membuat kluster dengan satu simpul sistem dan mengaktifkan identitas terkelola yang ditetapkan sistem.
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--node-count 1 \
--generate-ssh-keys
Saat Anda membuat kluster baru, AKS secara otomatis membuat grup sumber daya kedua untuk menyimpan sumber daya AKS. Untuk informasi selengkapnya, lihat Mengapa dua grup sumber daya dibuat dengan AKS?
Kluster dalam contoh ini menentukan jumlah simpul satu untuk menghemat waktu dan sumber daya. Di lingkungan produksi, gunakan jumlah simpul tiga node atau lebih. Perintah az aks create akan menggunakan tiga node secara default jika Anda tidak menentukan jumlah node.
Menambahkan kumpulan simpul GPU terkelola
Tambahkan kumpulan simpul GPU terkelola berbasis Linux ke kluster Anda dengan menggunakan perintah az aks nodepool add . Parameter --enable-managed-gpu=true ini mengonfigurasi AKS untuk menginstal dan mengelola driver GPU NVIDIA, plugin perangkat Kubernetes NVIDIA, pengekspor metrik DCGM, dan komponen pemantauan kesehatan GPU di kumpulan simpul.
Contoh berikut menambahkan kumpulan simpul GPU terkelola dengan menggunakan sistem operasi Linux Ubuntu default.
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
Parameter --node-taints sku=gpu:NoSchedule mencegah beban kerja non-GPU tetap berada di luar kumpulan node GPU kecuali beban kerja tersebut menyertakan toleration yang sesuai.
Setelah Anda membuat kumpulan simpul, gunakan perintah az aks nodepool show untuk mengonfirmasi bahwa profil GPU terkelola diaktifkan.
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}"
Output Anda harus menyertakan nilai berikut.
{
"GpuProfile": {
"driver": "Install",
"driverType": "",
"nvidia": {
"managementMode": "Managed",
"migStrategy": null
}
},
"Mode": "User",
"Name": "gpunp",
"Taints": [
"sku=gpu:NoSchedule"
],
"VmSize": "Standard_NC4as_T4_v3"
}
Menyambungkan ke kluster
Untuk mengelola kluster Kube, gunakan klien baris perintah Kube, kubectl. Jika Anda menggunakan Azure Cloud Shell, kubectl sudah terpasang. Untuk menginstal kubectl secara lokal, gunakan perintah az aks install-cli .
Konfigurasikan
kubectluntuk terhubung ke kluster Kubernetes dengan menggunakan perintah az aks get-credentials . Perintah ini mengunduh kredensial dan mengonfigurasi CLI Kubernetes untuk menggunakannya.az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEVerifikasi koneksi ke kluster Anda dengan menggunakan perintah kubectl get . Perintah ini mengembalikan daftar simpul kluster dan menunjukkan kumpulan simpul untuk setiap simpul.
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 userVerifikasi bahwa Kubernetes dapat menjadwalkan beban kerja GPU pada kumpulan simpul GPU terkelola.
kubectl get nodes -l kubernetes.azure.com/agentpool=$GPU_NP -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.allocatable.nvidia\.com/gpu}{"\n"}{end}'Output menunjukkan jumlah GPU yang dapat dialokasikan untuk setiap simpul di kumpulan simpul GPU terkelola.
aks-gpunp-123456789-vmss000000 1
Mengaktifkan pengumpulan metrik GPU
Kumpulan simpul GPU terkelola mencakup pengekspor metrik DCGM. Untuk menyerap metrik GPU ke Azure Managed Prometheus, pertama-tama aktifkan layanan terkelola Azure Monitor untuk Prometheus pada kluster AKS Anda. Kemudian, buat ConfigMap yang mengaktifkan profil dcgmexporter scraping pada agen 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
Setelah Anda menerapkan ConfigMap ini, semua kumpulan simpul GPU NVIDIA yang ada dan baru pada kluster diekstraksi secara otomatis. Untuk melihat metrik GPU di Azure Managed Grafana, lihat Pengamatan GPU di Azure Kubernetes Service (AKS).
Menyebarkan aplikasi
Sebarkan beban kerja GPU untuk mengonfirmasi bahwa kumpulan simpul GPU terkelola dapat menjalankan aplikasi nyata. Contoh ini menjalankan Ollama, yang melayani model bahasa besar sumber terbuka kecil (Llama 3.2 1B) melalui API yang kompatibel dengan OpenAI. Ollama dibangun di atas llama.cpp, yang mendukung GPU NVIDIA T4 di pool node Standard_NC4as_T4_v3 yang digunakan oleh panduan mulai cepat ini.
Manifes berikut membuat Deployment dan Service.
Deployment meminta satu GPU (nvidia.com/gpu: 1), menyertakan tolerasi untuk taint sku=gpu:NoSchedule, dan menggunakan pemilih node untuk menargetkan pool node GPU terkelola. Ketika kontainer dimulai, server Ollama dijalankan dan model llama3.2:1b diunduh agar pod siap menangani permintaan.
Sebarkan aplikasi dengan menggunakan perintah berikut.
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
Manifest ini ditujukan untuk pool gpunp node. Jika Anda menggunakan nilai yang berbeda untuk GPU_NP variabel, perbarui nilai pemilih kubernetes.azure.com/agentpool node agar cocok sebelum Anda menerapkan manifes.
Konfirmasikan bahwa penyebaran siap dengan menggunakan perintah status peluncuran kubectl . Pengunduhan model awal dapat memakan waktu beberapa menit.
kubectl rollout status deployment/ollama --timeout=600s
Verifikasi bahwa pod berjalan pada kumpulan simpul GPU terkelola dengan menggunakan perintah kubectl get .
kubectl get pods -l app=ollama -o wide
Output Anda harus menunjukkan pod yang berjalan pada node di kumpulan gpunp simpul.
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>
Uji aplikasi
Teruskan port lokal ke Service dengan menggunakan perintah kubectl port-forward . Tetap jalankan perintah ini, dan buka terminal kedua untuk langkah-langkah yang tersisa.
kubectl port-forward svc/ollama 11434:11434
Di terminal kedua, kirim permintaan ke model dengan menggunakan titik akhir penyelesaian obrolan yang kompatibel dengan 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 mengembalikan respons JSON yang berisi jawaban yang dihasilkan, yang mengonfirmasi bahwa beban kerja melayani inferensi dari kumpulan simpul GPU terkelola.
Konfirmasikan bahwa model dimuat pada GPU dengan menggunakan ollama ps perintah . Kolom PROCESSOR menampilkan 100% GPU saat model berjalan pada 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
Anda juga dapat melihat GPU langsung dari dalam pod dengan menggunakan nvidia-smi perintah .
kubectl exec deploy/ollama -- nvidia-smi
Saat Anda selesai menguji, hentikan kubectl port-forward proses dengan memilih Ctrl+C di terminalnya. Aplikasi dihapus saat Anda menghapus kluster di langkah berikutnya.
Hapus kluster tersebut
Jika Anda tidak berencana melakukan tutorial AKS, bersihkan sumber daya yang tidak perlu untuk menghindari biaya penagihan Azure. Anda dapat menghapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait dengan menggunakan perintah az group delete .
az group delete --name $RESOURCE_GROUP --no-wait --yes
Anda membuat kluster AKS dengan identitas terkelola yang ditetapkan oleh sistem, yang merupakan opsi identitas default yang digunakan dalam panduan mulai cepat ini. Platform mengelola identitas ini sehingga Anda tidak perlu menghapusnya secara manual.
Langkah berikutnya
Dalam panduan memulai cepat ini, Anda menerapkan kluster Kubernetes lalu menambahkan kumpulan node GPU terkelola berbasis Linux. Untuk informasi selengkapnya tentang node GPU terkelola dan metrik GPU, lihat artikel berikut ini:
- Buat kumpulan simpul GPU yang dikelola sepenuhnya di Azure Kubernetes Service (AKS) (pratinjau).
- Pengamatan GPU dalam Azure Kubernetes Service (AKS).
Untuk mempelajari lebih lanjut tentang AKS dan melakukan contoh kode-ke-penyebaran lengkap, lanjutkan ke tutorial kluster Kubernetes.