Sdílet prostřednictvím


Povolení nebo zakázání automatického zřizování uzlů (NAP) ve službě Azure Kubernetes Service (AKS)

Tento článek vysvětluje, jak povolit nebo zakázat automatické zřizování uzlů (NAP) ve službě Azure Kubernetes Service (AKS) pomocí šablon Azure CLI nebo Azure Resource Manageru (ARM).

Pokud chcete vytvořit cluster AKS s podporou architektury NAP s vlastní virtuální sítí a podsítěmi, přečtěte si téma Vytvoření clusteru architektury NAP (Auto-Provisioning) uzlu ve vlastní virtuální síti.

Než začnete

Než začnete, projděte si přehled automatického zřizování uzlů (NAP) v článku AKS , který podrobně popisuje fungování architektury NAP, požadavky a omezení.

Povolte automatické zřizování uzlů (NAP) v clusteru AKS

Následující části vysvětlují, jak povolit architekturu NAP v novém nebo existujícím clusteru AKS:

Povolit NAP na novém clusteru

  • Povolte automatické zřizování uzlů v novém clusteru pomocí příkazu az aks create a nastavením příznaku --node-provisioning-mode na Auto. Následující příkaz také nastaví --network-plugin na azure, --network-plugin-mode na overlaya --network-dataplane na 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. Vytvořte soubor s názvem nap.json a přidejte následující konfiguraci šablony ARM s polem properties.nodeProvisioningProfile.mode nastaveným na hodnotu Auto, která umožňuje NAP. (Výchozí nastavení je 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. Povolte automatické zřizování uzlů v novém clusteru pomocí příkazu az deployment group create a příznaku --template-file nastaveného na cestu k souboru šablony ARM.

    az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
    

Povolit NAP na existujícím clusteru

  • Povolte automatické zřizování uzlů v existujícím clusteru pomocí příkazu az aks update s příznakem --node-provisioning-mode nastaveným na Auto.

    az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
    

Zakázání automatického provisioningu uzlů (NAP) v AKS clusteru

Důležité

NAP můžete na clusteru zakázat pouze v případě splnění následujících podmínek:

  • Neexistují žádné uzly NAP. Pomocí příkazu můžete kubectl get nodes -l karpenter.sh/nodepool zkontrolovat existující uzly spravované architekturou NAP.
  • Všechny existující Karpenter NodePools mají své spec.limits.cpu pole nastavené na 0. Tato akce zabrání vytvoření nových uzlů, ale nenaruší aktuálně spuštěné uzly.
  1. Nastavte pole spec.limits.cpu na 0 pro každý existující Karpenter NodePool. Například:

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

    Důležité

    Pokud nechcete před zakázáním architektury NAP bezpečně migrovat všechny pody spuštěné na uzlu NAP, můžete přeskočit kroky 2 a 3 a místo toho použít kubectl delete node příkaz pro každý uzel spravovaný architekturou NAP. Nicméně nedoporučujeme tyto kroky přeskočovat, protože by některé pody mohly zůstat v čekajícím stavu a nebudou respektovat rozpočty přerušení podů (PDB).

    Při použití kubectl delete node příkazu dávejte pozor jenom na odstranění uzlů spravovaných architekturou NAP. Uzly spravované architekturou kubectl get nodes -l karpenter.sh/nodepool NAP můžete identifikovat pomocí příkazu.

  2. Přidejte karpenter.azure.com/disable:NoSchedule taint ke každému Karpenteru NodePool. Například:

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

    Tato akce spustí proces migrace úloh na uzlech spravovaných architekturou NAP na uzly bez architektury NAP, které dodržují limity souborů PDB a přerušení. Pody se migrují na uzly bez architektury NAP, pokud se dají přizpůsobit. Pokud není dostatek pevně stanovené kapacity, zůstanou některé uzly spravované NAP.

  3. Navyšte kapacitu stávajících pevných velikostí ManagedClusterAgentPools nebo vytvořte novou pevnou velikost AgentPools, která převezme zatížení ze spravovaných uzlů NAP. Při přidání těchto uzlů do clusteru se uzly spravované architekturou NAP vyprázdní a práce se migruje na uzly s pevnou velikostí.

  4. Pomocí příkazu kubectl get nodes -l karpenter.sh/nodepool odstraňte všechny NAP-spravované uzly. Pokud uzly spravované architekturou NAP stále existují, cluster pravděpodobně nemá kapacitu s pevnou velikostí. V takovém případě byste měli přidat další uzly, aby bylo možné migrovat zbývající úlohy.

  1. Aktualizujte režim NAP na Manual pomocí příkazu Azure CLI az aks update s příznakem --node-provisioning-mode nastaveným na Manual.

    az aks update \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --node-provisioning-mode Manual
    
  1. Aktualizujte pole properties.nodeProvisioningProfile.mode na Manual ve vaší šabloně ARM a znovu ho nasaďte.

    {
      "$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"
            }
          }
        }
      ]
    }
    

Automatické zřizování uzlů monitorování

Načtení protokolů a stavu Karpenteru

Z Karpenteru můžete načíst protokoly a aktualizace stavu, které vám pomůžou diagnostikovat a ladit události související s architekturou NAP. AKS spravuje automatické zřizování uzlů vaším jménem a spouští ho ve spravované řídicí rovině. Můžete povolit protokoly řídicí roviny, abyste viděli protokoly a operace Karpenteru z automatického zřizování uzlů. Další informace o protokolech řídicí roviny najdete v dokumentaci k protokolům řídicí roviny AKS.

  1. Pomocí zde uvedených pokynů nastavte pravidlo pro protokoly prostředků, které bude přenášet protokoly automatického zřizování uzlů do Log Analytics. Nezapomeňte zaškrtnout políčko node-auto-provisioning při výběru možností pro protokoly.

  2. Vyberte oddíl Protokol ve vašem clusteru.

  3. Do Log Analytics zadejte následující příklad dotazu:

    AKSControlPlane
    | where Category == "karpenter-events"
    
  4. Zobrazení událostí automatického zřizování uzlů v CLI:

    kubectl get events --field-selector source=karpenter-events
    

Metriky automatického zřizování uzlů

Můžete povolit měření řídicí roviny (Preview) pro zobrazení konkrétních metrik Karpenteru a operací z automatického zřizování uzlů pomocí spravované služby Azure Monitor pro doplněk Prometheus.

Další kroky

Pro více informací o automatickém zřizování uzlů v AKS si přečtěte následující články: