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.
Artikel ini menjelaskan cara mengaktifkan atau menonaktifkan provisi otomatis simpul (NAP) di Azure Kubernetes Service (AKS) menggunakan templat Azure CLI atau Azure Resource Manager (ARM).
Jika Anda ingin membuat kluster AKS dengan dukungan NAP dengan jaringan virtual kustom (VNet) dan subnet, lihat Membuat kluster provisi otomatis simpul (NAP) di jaringan virtual kustom.
Sebelum Anda mulai
Sebelum memulai, tinjau Ikhtisar provisi otomatis simpul (NAP) pada artikel di AKS, yang merinci cara kerja NAP, prasyarat, dan batasan.
Mengaktifkan provisi otomatis simpul (NAP) pada kluster AKS
Bagian berikut menjelaskan cara mengaktifkan NAP pada kluster AKS baru atau yang sudah ada:
Nota
Anda dapat mengaktifkan metrik control plane untuk melihat log dan operasi dari penyediaan otomatis node dengan layanan terkelola Azure Monitor untuk add-on Prometheus.
Mengaktifkan NAP pada kluster baru
Aktifkan auto-provisioning node pada kluster baru dengan menggunakan perintah
az aks createdan flag--node-provisioning-modediatur keAuto. Perintah berikut juga mengatur--network-pluginkeazure,--network-plugin-modekeoverlay, dan--network-dataplanekecilium.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Auto \ --network-plugin azure \ --network-plugin-mode overlay \ --network-dataplane cilium \ --generate-ssh-keys
Buat file bernama
nap.jsondan tambahkan konfigurasi templat ARM berikut dengan bidangproperties.nodeProvisioningProfile.modediatur keAutountuk mengaktifkan NAP. (Pengaturan defaultnya adalahManual.){ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": {}, "parameters": {}, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2025-05-01", "sku": { "name": "Base", "tier": "Standard" }, "name": "napcluster", "location": "uksouth", "identity": { "type": "SystemAssigned" }, "properties": { "networkProfile": { "networkPlugin": "azure", "networkPluginMode": "overlay", "networkPolicy": "cilium", "networkDataplane":"cilium", "loadBalancerSku": "Standard" }, "dnsPrefix": "napcluster", "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "standard_d2s_v3", "osType": "Linux", "mode": "System" } ], "nodeProvisioningProfile": { "mode": "Auto" } } } ] }Aktifkan provisi otomatis node pada kluster baru menggunakan
az deployment group createperintah dengan flag--template-fileyang diatur ke path file templat ARM.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Mengaktifkan NAP pada kluster yang ada
Aktifkan provisi otomatis node pada kluster yang ada menggunakan perintah
dengan bendera disetel ke . az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Menonaktifkan penyediaan otomatis node (NAP) pada cluster AKS
Penting
Anda hanya dapat menonaktifkan NAP pada kluster jika kondisi berikut terpenuhi:
- Tidak ada simpul NAP yang ada. Anda dapat menggunakan perintah
kubectl get nodes -l karpenter.sh/nodepooluntuk memeriksa simpul yang dikelola NAP yang ada. - Semua Karpenter
NodePoolsyang ada memiliki bidangspec.limits.cpudiatur ke0. Tindakan ini mencegah simpul baru dibuat, tetapi tidak mengganggu simpul yang sedang berjalan.
Atur
spec.limits.cpubidang ke0untuk setiap KarpenterNodePoolyang ada. Contohnya:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Penting
Jika Anda tidak ingin memastikan bahwa setiap pod yang sebelumnya berjalan pada simpul NAP dimigrasikan dengan aman ke node non-NAP sebelum menonaktifkan NAP, Anda dapat melewati langkah 2 dan 3 dan sebaliknya menggunakan
kubectl delete nodeperintah untuk setiap simpul yang dikelola NAP. Namun, kami tidak menyarankan untuk melewati langkah-langkah ini, karena ini dapat menyebabkan beberapa pod tertunda dan tidak menghormati Anggaran Gangguan Pod (PDB).Saat menggunakan
kubectl delete nodeperintah , berhati-hatilah untuk hanya menghapus simpul yang dikelola NAP. Anda dapat mengidentifikasi simpul yang dikelola NAP menggunakankubectl get nodes -l karpenter.sh/nodepoolperintah .karpenter.azure.com/disable:NoScheduleTambahkan taint ke setiap KarpenterNodePool. Contohnya:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleTindakan ini memulai proses migrasi beban kerja di simpul yang dikelola NAP ke simpul non-NAP, mematuhi PDB dan batas gangguan. Pod bermigrasi ke node non-NAP jika bisa ditampung. Jika kapasitas berukuran tetap tidak mencukupi, beberapa simpul yang dikelola NAP akan tetap ada.
Ukuran tetap yang ada tingkatkan skalanya
ManagedClusterAgentPoolsatau buat ukuran tetap baruAgentPoolsuntuk mengambil beban dari simpul-simpul yang dikelola oleh NAP. Karena simpul ini ditambahkan ke kluster, simpul yang dikelola oleh NAP dikosongkan, dan pekerjaan dipindahkan ke simpul berukuran tetap.Hapus semua simpul yang dikelola NAP menggunakan perintah
kubectl get nodes -l karpenter.sh/nodepool. Jika simpul yang dikelola NAP masih ada, kluster kemungkinan tidak memiliki kapasitas ukuran tetap. Dalam hal ini, Anda harus menambahkan lebih banyak simpul sehingga beban kerja yang tersisa dapat dimigrasikan.
Perbarui mode NAP ke
Manualmenggunakan perintahaz aks updateAzure CLI dengan bendera--node-provisioning-modediatur keManual.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Manual
Perbarui bidang
properties.nodeProvisioningProfile.modemenjadiManualdi dalam templat ARM Anda dan lakukan penerapan ulang.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": {}, "parameters": {}, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2025-05-01", "sku": { "name": "Base", "tier": "Standard" }, "name": "napcluster", "location": "uksouth", "identity": { "type": "SystemAssigned" }, "properties": { "networkProfile": { "networkPlugin": "azure", "networkPluginMode": "overlay", "networkPolicy": "cilium", "networkDataplane":"cilium", "loadBalancerSku": "Standard" }, "dnsPrefix": "napcluster", "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "standard_d2s_v3", "osType": "Linux", "mode": "System" } ], "nodeProvisioningProfile": { "mode": "Manual" } } } ] }
Bermigrasi dari Karpenter open source yang dihosting sendiri ke provisioning otomatis node terkelola (NAP)
Jika Karpenter diinstal dari chart Helm sumber terbuka, Anda masih dapat mengaktifkan NAP di kluster Anda. Langkah-langkah ini mengasumsikan bahwa bagan Karpenter Helm diinstal.
Penting
Pastikan Anda menjalankan versi latest Karpenter sebelum memulai migrasi. NAP selalu menjalankan versi terbaru.
Penting
Berhati-hatilah untuk tidak menghapus CRD Karpenter saat melakukan proses migrasi ini. Jika CRD dihapus, CRD akan menghapus NodeClaims yang mendasar, yang dapat mengganggu beban kerja Anda.
Untuk memastikan CRD Karpenter tidak dihapus instalannya di langkah 2, hapus
managed-by=Helmlabel dan anotasi.:kubectl get crds -l app.kubernetes.io/managed-by=Helm -o name | grep karpenter.azure.com | xargs -I{} kubectl patch {} --type=json -p ' [ {"op":"remove","path":"/metadata/annotations/meta.helm.sh~1release-name"}, {"op":"remove","path":"/metadata/annotations/meta.helm.sh~1release-namespace"}, {"op":"remove","path":"/metadata/labels/app.kubernetes.io~1managed-by"} ]'Hapus instalan bagan Helm untuk menghapus Penyebaran, Layanan, Peran, dan sumber daya lain yang digunakan oleh sumber terbuka Karpenter. Pada titik ini, Karpenter tidak lagi bereaksi terhadap peristiwa penskalakan, tetapi simpul yang ada terus berfungsi.
helm uninstall karpenter -n kube-system # If you installed Karpenter into a different namespace than kube-system, specify that here instead of kube-systemAktifkan NAP pada kluster Anda:
az aks update --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --node-provisioning-mode Auto --node-provisioning-default-pools NonePerintah ini menonaktifkan NodePools default karena Anda memiliki NodePools yang ada dan ingin terus menggunakannya. Jika Anda ingin mengaktifkan pool default node auto-provisioning, Anda dapat menghilangkan
--node-provisioning-default-pools Nonedari perintahaz aks update.Verifikasi migrasi selesai: Ketika
az aks updatedari langkah 3 berhasil diselesaikan, migrasi dilakukan. Anda juga dapat mengonfirmasi bahwa migrasi dilakukan dengan memeriksa anotasi pada CRD Karpenter. Anda harus melihat:meta.helm.sh/release-name: aks-managed-karpenter-overlay-base meta.helm.sh/release-namespace: kube-systemPada titik ini, NAP diaktifkan dan penskalakan otomatis harus dilanjutkan.
Pemantauan penyediaan otomatis Node
Mengambil log dan status Karpenter
Anda dapat mengambil log dan pembaruan status dari Karpenter untuk membantu mendiagnosis dan men-debug peristiwa terkait NAP. AKS mengelola penyediaan otomatis node atas nama Anda dan menjalankannya di control plane yang dikelola. Anda dapat mengaktifkan log plane kontrol untuk melihat log dan operasi Karpenter dari provisi otomatis node. Untuk informasi selengkapnya tentang log sarana kontrol, lihat dokumentasi log sarana kontrol AKS
Siapkan aturan log sumber daya untuk mengirim log provisi otomatis simpul ke Log Analytics menggunakan instruksi di sini. Pastikan Anda mencentang kotak
node-auto-provisioningsaat memilih opsi untuk Log.Pilih bagian Log pada kluster Anda.
Masukkan contoh kueri berikut ke dalam Log Analytics:
AKSControlPlane | where Category == "karpenter-events"Lihat peristiwa provisi otomatis simpul di CLI:
kubectl get events --field-selector source=karpenter-events
Metrik provisi otomatis node
Anda dapat mengaktifkan metrik control plane (Pratinjau) untuk melihat metrik Karpenter dan operasi tertentu dari provisi otomatis node dengan add-on Prometheus pada layanan Azure Monitor yang terkelola.
Langkah selanjutnya
Untuk informasi selengkapnya tentang node auto-provisioning di AKS, lihat artikel berikut ini:
- Menggunakan penyediaan otomatis untuk simpul pada jaringan virtual khusus
- Mengonfigurasi jaringan untuk penyediaan otomatis simpul di AKS
- Mengonfigurasi kumpulan simpul untuk provisi otomatis simpul di AKS
- Mengonfigurasi kebijakan gangguan untuk penyediaan otomatis node di AKS
- Meningkatkan citra node untuk provisi otomatis node di AKS