Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica cómo habilitar o deshabilitar el aprovisionamiento automático de nodos (NAP) en Azure Kubernetes Service (AKS) mediante la CLI de Azure o las plantillas de Azure Resource Manager (ARM).
Si desea crear un clúster de AKS habilitado para NAP con una red virtual personalizada (VNet) y subredes, consulte Creación de un clúster de aprovisionamiento automático de nodos (NAP) en una red virtual personalizada.
Antes de empezar
Antes de empezar, revise el artículo Información general sobre el aprovisionamiento automático de nodos (NAP) en AKS , que detalla cómo funciona NAP, requisitos previos y limitaciones.
Habilitación del aprovisionamiento automático de nodos (NAP) en un clúster de AKS
En las secciones siguientes se explica cómo habilitar NAP en un clúster de AKS nuevo o existente:
Nota:
Puede habilitar las métricas del plano de control para ver los registros y las operaciones desde el aprovisionamiento automático de nodos con el servicio administrado de Azure Monitor para el complemento Prometheus.
Habilitación de NAP en un nuevo clúster
Habilite el aprovisionamiento automático de nodos en un nuevo clúster mediante el comando
az aks createcon la marca--node-provisioning-modeestablecida enAuto. El siguiente comando también configura--network-pluginenazure,--network-plugin-modeenoverlayy--network-dataplaneencilium.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
Cree un archivo denominado
nap.jsony agregue la siguiente configuración de plantilla ARM con el campoproperties.nodeProvisioningProfile.modeestablecido enAuto, que habilita NAP. (El valor predeterminado esManual.{ "$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" } } } ] }Habilite el aprovisionamiento automático de nodos en un nuevo clúster usando el comando
az deployment group createcon el indicador--template-fileestablecido en la ruta del archivo de plantilla de ARM.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Habilitación de NAP en un clúster existente
Habilite el aprovisionamiento automático de nodos en un clúster existente mediante el comando
az aks updatecon la opción--node-provisioning-modeestablecida comoAuto.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Deshabilitación del aprovisionamiento automático de nodos (NAP) en un clúster de AKS
Importante
Solo puede deshabilitar NAP en un clúster si se cumplen las condiciones siguientes:
- No hay nodos NAP existentes. Puede usar el
kubectl get nodes -l karpenter.sh/nodepoolcomando para comprobar si hay nodos administrados por NAP existentes. - Todos los karpenter
NodePoolsexistentes tienen suspec.limits.cpucampo establecido en0. Esta acción impide que se creen nuevos nodos, pero no interrumpe los nodos que se están ejecutando actualmente.
Establezca el campo
spec.limits.cpuen0para cadaNodePoolde Karpenter existente. Por ejemplo:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Importante
Si no desea asegurarse de que todos los pods que se ejecutan anteriormente en un nodo NAP se migran de forma segura a un nodo que no es NAP antes de deshabilitar NAP, puede omitir los pasos 2 y 3 y, en su lugar, usar el
kubectl delete nodecomando para cada nodo administrado por NAP. Sin embargo, no se recomienda omitir estos pasos, ya que puede dejar algunos pods pendientes y no respeta los presupuestos de disrupción de pods (PDB).Al usar el
kubectl delete nodecomando , tenga cuidado de eliminar solo los nodos administrados por NAP. Puede identificar los nodos administrados por NAP mediante elkubectl get nodes -l karpenter.sh/nodepoolcomando .Agregue la intolerancia
karpenter.azure.com/disable:NoSchedulea cadaNodePoolde Karpenter. Por ejemplo:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleEsta acción inicia el proceso de migración de las cargas de trabajo en los nodos administrados por NAP a nodos no NAP, respetando los PDBs y los límites de interrupciones. Los pods migran a nodos que no sean NAP en caso de ajustarse. Si no hay suficiente capacidad de tamaño fijo, algunos nodos administrados por NAP permanecerán.
Ampliar el tamaño fijo existente
ManagedClusterAgentPoolso crear un nuevo tamaño fijoAgentPoolspara gestionar la carga de los nodos gestionados por NAP. A medida que estos nodos se agregan al clúster, los nodos administrados por NAP se vacían y el trabajo se migra a nodos de tamaño fijo.Elimine todos los nodos administrados por NAP mediante el
kubectl get nodes -l karpenter.sh/nodepoolcomando . Si todavía existen nodos administrados por NAP, es probable que el clúster no tenga capacidad de tamaño fijo. En este caso, debe agregar más nodos para que se puedan migrar las cargas de trabajo restantes.
Actualice el modo NAP a
Manualusando el comando de la CLI de Azureaz aks updatecon la marca--node-provisioning-modeestablecida enManual.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Manual
Actualice el campo
properties.nodeProvisioningProfile.modeaManualen su plantilla de ARM y vuelva a implementarlo.{ "$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" } } } ] }
Pasos siguientes
Para obtener más información sobre el aprovisionamiento automático de nodos en AKS, consulte los siguientes artículos:
- Uso del aprovisionamiento automático de nodos en una red virtual personalizada
- Configuración de redes para el aprovisionamiento automático de nodos en AKS
- Configuración de grupos de nodos para el aprovisionamiento automático de nodos en AKS
- Configuración de directivas de interrupción para el aprovisionamiento automático de nodos en AKS
- Actualización de imágenes de nodo para el aprovisionamiento automático de nodos en AKS