Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) düğüm otomatik sağlamayı (NAP) etkinleştirme veya devre dışı bırakma

Bu makalede, Azure CLI veya Azure Resource Manager (ARM) şablonlarını kullanarak Azure Kubernetes Service'te (AKS) düğüm otomatik sağlamayı (NAP) etkinleştirme veya devre dışı bırakma açıklanmaktadır.

Özel sanal ağ (VNet) ve alt ağlarla NAP özellikli bir AKS kümesi oluşturmak istiyorsanız bkz. Özel bir sanal ağda düğüm otomatik sağlama (NAP) kümesi oluşturma.

Başlamadan önce

Başlamadan önce, NAP'nin nasıl çalıştığını, önkoşulları ve sınırlamaları ayrıntılı olarak açıklayan AKS'de düğüm otomatik sağlamaya (NAP) genel bakış makalesini gözden geçirin.

AKS kümesinde düğüm otomatik sağlamayı (NAP) etkinleştirme

Aşağıdaki bölümlerde yeni veya mevcut aks kümesinde NAP'nin nasıl etkinleştirileceği açıklanmaktadır:

Uyarı

Denetim düzlemi ölçümlerini, Azure İzleyici yönetilen hizmetiyle Prometheus eklentisi kullanarak düğüm otomatik sağlamadan gelen günlükleri ve işlemleri görmek için etkinleştirebilirsiniz.

Yeni kümede NAP'yi etkinleştirme

  • Yeni bir kümede düğüm otomatik sağlamayı etkinleştirmek için az aks create komutunu --node-provisioning-mode bayrağı Auto olarak ayarlayarak kullanın. Aşağıdaki komut, --network-plugin öğesini azure olarak, --network-plugin-mode öğesini overlay olarak ve --network-dataplane öğesini cilium olarak ayarlar.

    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. Dosya adı nap.json olan bir dosya oluşturun ve properties.nodeProvisioningProfile.mode alanını Auto olarak ayarlayarak NAP'i etkinleştiren aşağıdaki ARM şablonu yapılandırmasını ekleyin. (Varsayılan ayar: 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. ARM şablon dosyasının yolunu --template-file bayrağı ile belirleyerek az deployment group create komutunu kullanarak yeni bir kümede düğüm otomatik sağlamayı etkinleştirin.

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

Mevcut kümede NAP'yi etkinleştirme

  • Mevcut bir kümede az aks update komutunu, --node-provisioning-mode bayrağı Auto olarak ayarlanmış şekilde kullanarak düğüm otomatik sağlama işlemini etkinleştirin.

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

AKS kümesinde düğüm otomatik sağlamayı (NAP) devre dışı bırakma

Önemli

Bir kümede NAP'yi yalnızca aşağıdaki koşullar karşılanırsa devre dışı bırakabilirsiniz:

  • Mevcut NAP düğümü yok. Mevcut NAP ile yönetilen düğümleri denetlemek için komutunu kullanabilirsiniz kubectl get nodes -l karpenter.sh/nodepool .
  • Mevcut tüm Karpenter NodePools, spec.limits.cpu alanı 0 olarak ayarlanmıştır. Bu eylem yeni düğümlerin oluşturulmasını engeller, ancak şu anda çalışan düğümleri kesintiye uğratmaz.
  1. Mevcut her Karpenter için spec.limits.cpu alanını 0 olarak NodePool ayarlayın. Örneğin:

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

    Önemli

    NAP'yi devre dışı bırakmadan önce daha önce BIR NAP düğümünde çalışan her pod'un NAP olmayan bir düğüme güvenli bir şekilde geçirildiğinden emin olmak istemiyorsanız, 2. ve 3. adımları atlayabilir ve bunun yerine NAP ile yönetilen her düğüm için komutunu kullanabilirsiniz kubectl delete node . Ancak bazı podları beklemede bırakabileceğinden ve Pod Disruption Budgets (PDB) ile uyumlu olmadığından bu adımları atlamanızı önermeyiz.

    komutunu kullanırken kubectl delete node yalnızca NAP ile yönetilen düğümleri silmeye dikkat edin. komutunu kullanarak NAP ile yönetilen düğümleri kubectl get nodes -l karpenter.sh/nodepool tanımlayabilirsiniz.

  2. karpenter.azure.com/disable:NoSchedule yabancı maddeyi her Karpenter'a ekleyin. Örneğin:

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

    Bu eylem, NAP ile yönetilen düğümlerdeki iş yüklerini NAP olmayan düğümlere geçirme işlemini başlatır ve PDB'leri ve kesinti sınırlarını uygular. Podlar sığabiliyorsa NAP olmayan düğümlere geçiş yapar. Eğer yeterli sabit boyutlu kapasite yoksa, NAP tarafından yönetilen bazı düğümler kalır.

  3. Yükü NAP ile yönetilen düğümlerden almak için mevcut sabit boyutlu ManagedClusterAgentPools ölçeklendirin veya yeni bir sabit boyutlu AgentPools oluşturun. Bu düğümler kümeye eklendikçe NAP ile yönetilen düğümler boşaltılır ve iş sabit boyutlu düğümlere geçirilir.

  4. komutunu kullanarak NAP ile yönetilen tüm düğümleri kubectl get nodes -l karpenter.sh/nodepool silin. NAP ile yönetilen düğümler hala mevcutsa kümede büyük olasılıkla sabit boyutlu kapasite yoktur. Bu durumda, kalan iş yüklerinin geçirilebilmesi için daha fazla düğüm eklemeniz gerekir.

  1. Azure CLI komutunu Manual olarak ayarlanmış --node-provisioning-mode bayrağıyla kullanarak, NAP modunu az aks update güncelleştirinManual.

    az aks update \
        --name $CLUSTER_NAME \
        --resource-group $RESOURCE_GROUP \
        --node-provisioning-mode Manual
    
  1. properties.nodeProvisioningProfile.mode alanını ARM şablonunuzda Manual olarak güncelleyin ve yeniden dağıtın.

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

Sonraki Adımlar

AKS'de düğüm otomatik sağlama hakkında daha fazla bilgi için aşağıdaki makalelere bakın: