停止和啟動 Azure Kubernetes Service (AKS) 叢集
您可能不需要持續執行 Azure Kubernetes Service (AKS) 工作負載。 例如,您可能有只能在上班時間使用的開發叢集。 這表示叢集可能會閒置,即只執行系統元件。 您可以將所有 User
節點集區都調整為 0 來減少叢集使用量,但執行叢集時,仍然需要 System
集區才能執行系統元件。
若要更恰當地最佳化您在這些期間的成本,則可以關閉 (停止) 叢集。 此動作會停止控制平面和代理程式節點,讓您可以節省所有運算成本,同時維護所有物件 (獨立 Pod 除外)。 叢集狀態會在您再次啟動叢集時儲存,讓您可以挑選您離開的位置。
警告
停止叢集會解除分配控制平面,並釋放容量。 在遇到容量限制的區域,客戶可能無法啟動已停止的叢集。 基於這個原因,我們不建議停止任務關鍵性工作負載。
注意
AKS 啟動作業會從 ETCD 還原所有物件,但具有相同名稱和年份的獨立 Pod 除外。 這表示 Pod 的年份會從原始建立時間繼續計算。 不論叢集是否處於已停止狀態,此計數都會隨著時間持續增加。
開始之前
本文假設您具有現有 AKS 叢集。 如果您需要 AKS 叢集,則可以使用 Azure CLI、Azure PowerShell 或 Azure 入口網站予以建立。
關於叢集停止/啟動功能
使用叢集停止/啟動功能時,適用下列條件:
- 只有虛擬機器擴展集所支援的叢集才支援此功能。
- 您無法停止使用節點自動佈建 (NAP) 功能的叢集。
- 已停止 AKS 叢集的叢集狀態最多保留 12 個月。 如果叢集已停止超過 12 個月,則您無法復原狀態。 如需詳細資訊,請參閱 AKS 支援原則。
- 您只能對已停止的 AKS 叢集執行啟動或刪除作業。 若要執行其他作業 (例如調整或升級),您需要先啟動叢集。
- 如果您已佈建連結至私人叢集的 PrivateEndpoints,則啟動已停止的 AKS 叢集時,需要將其刪除,並重新建立。
- 因為停止程序會清空所有節點,所以將會刪除任何獨立的 Pod (即不是由部署、StatefulSet、DaemonSet、工作等所管理的 Pod)。
- 啟動叢集備份時,預期會發生下列行為:
- API 伺服器的 IP 位址可能會變更。
- 如果您要使用叢集自動調整程式,則當您啟動叢集時,目前的節點計數可能不會介於所設定的最小範圍值與最大範圍值之間。 叢集會以執行其工作負載所需的節點數目作為開頭,而不會受到自動調整程式設定的影響。 當您的叢集執行調整作業時,最小值與最大值將會影響您目前的節點計數,而您的叢集最後將會進入並維持在所需的範圍內,直到您停止叢集為止。
停止 AKS 叢集
使用
az aks stop
命令來停止執行中 AKS 叢集,包括節點和控制平面。 下列範例會停止名稱為 myAKSCluster 的叢集:az aks stop --name myAKSCluster --resource-group myResourceGroup
使用
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 叢集
警告
在 AKS 上使用啟動/停止功能之後,必須先等候 15-30 分鐘,再重新啟動 AKS 叢集。 此等候期間是必要的,因為相關服務需要幾分鐘的時間才能完全停止。 嘗試在此程序期間重新啟動叢集可能會中斷關機程式,並可能導致叢集或其工作負載發生問題。
使用
az aks start
命令來啟動已停止的 AKS 叢集。 即會使用先前的控制平面狀態和代理程式節點數目來重新啟動叢集。 下列範例會啟動名稱為 myAKSCluster 的叢集:az aks start --name myAKSCluster --resource-group myResourceGroup
使用
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
,則叢集尚未完全啟動。
下一步
- 如果要了解如何將
User
集區縮放為 0,請參閱將集區User
縮放為 0。 - 若要了解如何使用現成執行個體以節省成本,請參閱將現成節點集區新增至 AKS。
- 如果要深入了解 AKS 支援原則,請參閱AKS 支援原則。