停止和啟動 Azure Kubernetes Service (AKS) 叢集

您可能不需要持續執行 Azure Kubernetes Service (AKS) 工作負載。 例如,您可能有只能在上班時間使用的開發叢集。 這表示叢集可能會閒置,即只執行系統元件。 您可以將所有 User 節點集區都調整為 0 來減少叢集使用量,但執行叢集時,仍然需要 System 集區才能執行系統元件。

若要更恰當地最佳化您在這些期間的成本,則可以關閉 (停止) 叢集。 此動作會停止控制平面和代理程式節點,讓您可以節省所有運算成本,同時維護所有物件 (獨立 Pod 除外)。 叢集狀態會在您再次啟動叢集時儲存,讓您可以挑選您離開的位置。

警告

停止叢集會解除分配控制平面並釋放容量。 在遇到容量限制的區域,客戶可能無法啟動已停止的叢集。 基於這個原因,我們不建議停止任務關鍵性工作負載。

開始之前

本文假設您具有現有 AKS 叢集。 如果您需要 AKS 叢集,則可以使用 Azure CLIAzure PowerShellAzure 入口網站予以建立。

關於叢集停止/啟動功能

使用叢集停止/啟動功能時,適用下列條件:

  • 只有虛擬機器擴展集所支援的叢集才支援此功能。
  • 您無法停止使用節點自動佈建 (NAP) 功能的叢集。
  • 已停止 AKS 叢集的叢集狀態最多保留 12 個月。 如果叢集已停止超過 12 個月,則您無法復原狀態。 如需詳細資訊,請參閱 AKS 支援原則
  • 您只能對已停止的 AKS 叢集執行啟動或刪除作業。 若要執行其他作業 (例如調整或升級),您需要先啟動叢集。
  • 如果您已佈建連結至私人叢集的 PrivateEndpoints,則啟動已停止的 AKS 叢集時,需要將其刪除,並重新建立。
  • 因為停止程序會清空所有節點,所以將會刪除任何獨立的 Pod (即不是由部署、StatefulSet、DaemonSet、工作等所管理的 Pod)。
  • 啟動叢集備份時,預期會發生下列行為:
    • API 伺服器的 IP 位址可能會變更。
    • 如果您要使用叢集自動調整程式,則當您啟動叢集時,目前的節點計數可能不會介於所設定的最小範圍值與最大範圍值之間。 叢集會以執行其工作負載所需的節點數目作為開頭,而不會受到自動調整程式設定的影響。 當您的叢集執行調整作業時,最小值與最大值將會影響您目前的節點計數,而您的叢集最後將會進入並維持在所需的範圍內,直到您停止叢集為止。

停止 AKS 叢集

  1. 使用 az aks stop 命令來停止執行中 AKS 叢集,包括節點和控制平面。 下列範例會停止名稱為 myAKSCluster 的叢集:

    az aks stop --name myAKSCluster --resource-group myResourceGroup
    
  2. 使用 az aks show 命令,並確認 powerState 顯示為 Stopped,以確認您的叢集已停止。

    az aks show --name myAKSCluster --resource-group myResourceGroup
    

    您的輸出看起來應類似下列的緊縮範例輸出:

    {
    [...]
      "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_westus2",
      "powerState":{
        "code":"Stopped"
      },
      "privateFqdn": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
    [...]
    }
    

    如果 provisioningState 顯示 Stopping,則叢集尚未完全停止。

重要

如果您要使用 Pod 中斷預算,則停止作業需要的時間可能較長,因為清空程序需要較多時間才能完成。

啟動 AKS 叢集

警告

請不要重複停止和啟動叢集。 這可能會導致錯誤。 停止叢集之後,您最少應該先等候 15-30 分鐘,再將其重新啟動。

  1. 使用 az aks start 命令來啟動已停止的 AKS 叢集。 即會使用先前的控制平面狀態和代理程式節點數目來重新啟動叢集。 下列範例會啟動名稱為 myAKSCluster 的叢集:

    az aks start --name myAKSCluster --resource-group myResourceGroup
    
  2. 使用 az aks show 命令,並確認 powerState 顯示為 Running,以確認您的叢集已啟動。

    az aks show --name myAKSCluster --resource-group myResourceGroup
    

    您的輸出看起來應類似下列的緊縮範例輸出:

    {
    [...]
      "nodeResourceGroup": "MC_myResourceGroup_myAKSCluster_westus2",
      "powerState":{
        "code":"Running"
     },
     "privateFqdn": null,
     "provisioningState": "Succeeded",
     "resourceGroup": "myResourceGroup",
    [...]
    }
    

    如果 provisioningState 顯示 Starting,則叢集尚未完全啟動。

下一步