Stop and Start node pools in Azure Kubernetes Service (AKS)

您可能不需要持續執行 AKS 工作負載。 例如您的開發叢集可能有具有執行特定工作負載的節點集區。 如果要將計算成本最佳化,您可以完全停止 AKS 叢集中的節點集區。 當你需要重新執行工作負載時,可以重新啟動節點池。 本文將教你如何使用 Azure CLI 在 AKS 叢集中停止和啟動節點池。

功能和限制

  • 您無法將系統集區停止。
  • 支援現成節點集區。
  • 可以升級已停止的節點集區。
  • 要停止節點池,叢集與使用者節點池必須同時運行,且節點池 provisioningState 必須是 Succeeded。
  • 要啟動節點池,叢集必須在運行中,且使用者節點池必須停止。
  • 你無法阻止使用 節點自動配置(NAP)的叢集中的節點池。

小提示

你可以用 Azure Copilot 在 Azure 入口網站中停止和啟動你的節點池。 欲了解更多資訊,請參閱「 使用 Azure Copilot 高效地處理 AKS 叢集」。

開始之前

本文假設您目前具有 AKS 叢集。 若您需要 AKS 叢集,請使用 Azure CLI、Azure PowerShell 或 Azure 入口網站建立。

本文需要 Azure CLI 2.38.0 或更新版本。 執行 az --version 來了解您安裝的版本。 欲了解更多關於安裝或升級 Azure CLI 的資訊,請參閱安裝 Azure CLI。

Stop a running aks node pool using the Azure CLI

在停止節點池之前,先確認叢集和使用者節點池都在運作,節點池 provisioningState 是 Succeeded,且叢集沒有使用節點自動配置。

Warning

停止節點池會停止該池中所有虛擬機。 在停止池子之前,先確認其工作負載能容忍中斷,或能在另一個節點池上運行。

  1. 使用 az aks nodepool stop 命令停止執行中的 AKS 節點集區。

    az aks nodepool stop --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name testnodepool 
    
  2. 使用 az aks nodepool show 命令驗證您的節點集區已停止。

    az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name testnodepool
    

    下列簡化的輸出範例顯示 powerState 為 Stopped:

    {
    [...]
     "osType": "Linux",
        "podSubnetId": null,
        "powerState": {
            "code": "Stopped"
            },
        "provisioningState": "Succeeded",
        "proximityPlacementGroupId": null,
    [...]
    }
    

    注意

    如果 provisioningState 顯示 Stopping,代表您的節點集區仍在進行停止流程。

    注意

    停止節點池也會停止該節點池的 叢集自動擴展器 。 啟動節點池會重新啟動叢集自動調整器。 在虛擬機停止時,不要手動修改虛擬機在 Scale Set 實例池中的數量。 直接修改 AKS 管理的基礎設施資源是不支援的,可能導致叢集自動調整器不一致及操作失敗。 欲了解更多資訊,請參閱 「代理節點的使用者自訂」。


Restart an AKS node pool using the Azure CLI

在啟動節點池之前,先確認叢集正在運行且使用者節點池已停止。

  1. 用這個az aks nodepool start指令重新啟動停止的節點池。

    az aks nodepool start --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name testnodepool 
    
  2. 使用 az aks nodepool show 命令驗證您的節點集區已啟動。

    az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name testnodepool
    

    下列簡化的輸出範例顯示 powerState 為 Running:

    {
    [...]
     "osType": "Linux",
        "podSubnetId": null,
        "powerState": {
            "code": "Running"
            },
        "provisioningState": "Succeeded",
        "proximityPlacementGroupId": null,
    [...]
    }
    

    注意

    如果 provisioningState 顯示 Starting,代表您的節點集區仍在進行啟動流程。


下一步