Bagikan melalui


Mengaktifkan atau menonaktifkan provisi simpul otomatis (NAP) di Azure Kubernetes Service (AKS)

Artikel ini menjelaskan cara mengaktifkan atau menonaktifkan node auto-provisioning (NAP) di Azure Kubernetes Service (AKS) menggunakan Azure CLI atau templat 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 pesawat kontrol 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 create dan flag --node-provisioning-mode diatur ke Auto. Perintah berikut juga mengatur --network-plugin ke azure, --network-plugin-mode ke overlay, dan --network-dataplane ke cilium.

    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
    
  1. Buat file bernama nap.json dan tambahkan konfigurasi templat ARM berikut dengan bidang properties.nodeProvisioningProfile.mode diatur ke Auto untuk mengaktifkan NAP. (Pengaturan defaultnya adalah Manual.)

    {
      "$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"
            }
          }
        }
      ]
    }
    
  2. Aktifkan provisi otomatis node pada kluster baru menggunakan az deployment group create perintah dengan flag --template-file yang 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/nodepool untuk memeriksa simpul yang dikelola NAP yang ada.
  • Semua Karpenter NodePools yang ada memiliki bidang spec.limits.cpu diatur ke 0. Tindakan ini mencegah simpul baru dibuat, tetapi tidak mengganggu simpul yang sedang berjalan.
  1. Atur spec.limits.cpu bidang ke 0 untuk setiap Karpenter NodePoolyang ada. Contohnya:

    apiVersion: karpenter.sh/v1
    kind: NodePool
    metadata:
      name: default
    spec:
      limits:
        cpu: 0
    

    Penting

    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 node perintah 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 node perintah , berhati-hatilah untuk hanya menghapus simpul yang dikelola NAP. Anda dapat mengidentifikasi simpul yang dikelola NAP menggunakan kubectl get nodes -l karpenter.sh/nodepool perintah .

  2. karpenter.azure.com/disable:NoSchedule Tambahkan taint ke setiap Karpenter NodePool. Contohnya:

    apiVersion: karpenter.sh/v1
    kind: NodePool
    metadata:
      name: default
    spec:
      template:
        spec:
          ...
          taints:
            - key: karpenter.azure.com/disable
              effect: NoSchedule
    

    Tindakan 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 dapat cocok. Jika kapasitas berukuran tetap tidak mencukupi, beberapa simpul yang dikelola NAP akan tetap ada.

  3. Ukuran tetap yang ada tingkatkan skalanya ManagedClusterAgentPools atau buat ukuran tetap baru AgentPools untuk 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.

  4. 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.

  1. Perbarui mode NAP untuk Manual menggunakan perintah Azure CLI dengan flag --node-provisioning-mode disetel ke Manual.

    az aks update \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --node-provisioning-mode Manual
    
  1. Perbarui bidang properties.nodeProvisioningProfile.mode menjadi Manual di 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"
            }
          }
        }
      ]
    }
    

Langkah selanjutnya

Untuk informasi selengkapnya tentang node auto-provisioning di AKS, lihat artikel berikut ini: