删除Azure Kubernetes 服务 (AKS)节点池

本文概述了Azure Kubernetes 服务 (AKS)中的节点池删除,包括删除节点池时会发生什么情况,以及如何删除节点池。

在删除节点池时会发生什么?

删除节点池时,将删除以下资源:

  • 节点池中每个节点的虚拟机规模集 (VMSS) 和虚拟机 (VM)
  • 节点池中的任何节点实例以及在这些节点上运行的任何Pod

删除节点池

重要

删除节点池时,请记住以下信息:

  • 节点池一经删除无法恢复。 需要创建新的节点池并重新部署应用程序。

使用 az aks nodepool delete 命令删除节点池。

az aks nodepool delete \
    --resource-group <resource-group-name> \
    --cluster-name <cluster-name> \
    --name <node-pool-name>

若要验证节点池是否已成功删除,请使用 kubectl get nodes 命令确认节点池中的节点不再存在。

删除现有节点池时忽略 PodDisruptionBudgets (PDB)

如果群集具有阻止删除节点池的 PodDisruptionBudget,可以通过设置 --ignore-pdb来忽略 PodDisruptionBudget 要求。 若要了解有关 PodDisruptionBudgets 的详细信息,请参阅:

  1. 在不遵循群集上设置的任何 PodDisruptionBudgets 的情况下,使用带有az aks nodepool delete标志的--ignore-pdb命令删除现有节点池:

    az aks nodepool delete \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name nodepool1 \
        --ignore-pdb
    
  2. 若要验证节点池是否已成功删除,请使用 kubectl get nodes 命令确认节点池中的节点不再存在。

移除现有节点池中的特定 VM

注释

使用此命令删除 VM 时,AKS 不会执行隔离和排出。 若要充分减少对重新计划 Pod(当前正在要删除的节 VM 上运行)的中断,请在删除之前对 VM 执行隔离和排出。 可通过“重设节点池大小”教程中提供的示例方案,详细了解如何进行封锁和清空。

  1. 使用 kubectl get nodes 命令列出现有节点。

    kubectl get nodes
    

    输出应类似于以下示例输出:

    NAME                                 STATUS   ROLES   AGE   VERSION
    aks-mynodepool-20823458-vmss000000   Ready    agent   63m   v1.21.9
    aks-mynodepool-20823458-vmss000001   Ready    agent   63m   v1.21.9
    aks-mynodepool-20823458-vmss000002   Ready    agent   63m   v1.21.9
    
  2. 使用 az aks nodepool delete-machines 命令删除指定的 VM。 请务必将占位符替换为你自己的值。

    az aks nodepool delete-machines \
        --resource-group <resource-group-name> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --machine-names <vm-name-1> <vm-name-2>
    
  3. 使用 kubectl get nodes 命令验证 VM 是否已成功删除。

    kubectl get nodes
    

    输出不应再包含在 az aks nodepool delete-machines 命令中指定的 VM。

后续步骤

有关调整 AKS 中的节点池大小的详细信息,请参阅“重设节点池大小”。