叢集可擴縮性概念

已完成

節點耗盡

在 Pod YAML 檔案的 spec.containers.resources 索引鍵中,您可以定義 Pod 所需的資源數目。 在節點內建立新的 Pod 後,Kubernetes 會自動將指定數量的資源配置給 Pod,以讓其利用所需的資源量來執行。

單一節點是具有數量有限的資源 (例如 CPU 和 RAM) 供 Pod 使用的單一虛擬機器 (VM)。 您無法在節點中啟動數量不限的 Pod。 當節點不符合 Pod 資源所需的需求時,Pod 會與指定的資源競爭節點資源,而導致節點耗盡。 Pod 會維持擱置狀態,直到有足夠的資源可供使用時,才會排程給任何節點。

叢集可擴縮性

若要避免節點耗盡,操作員必須擴增叢集,並在節點集區中新增更多 VM。 您可以使用 Azure CLI az aks scale 命令來執行手動叢集調整。 您也可以使用 Azure 入口網站來手動調整叢集。 登入入口網站,並選取您的 Azure Kubernetes Service (AKS) 叢集。 在 [設定] 底下,選取 [節點集區]。 選取您想要調整的節點集區,然後選取 [調整節點集區]

手動調整可能會很困難,特別是叢集需求不一致且變化不定時。 當 Pod 數目持續變化時,您需要持續監視其是否有未排程的 Pod,並即時進行任何必要的調整。

叢集自動調整程式

在 AKS 中,叢集自動調整程式工具會將叢集調整程序自動化。 當您在 AKS 叢集上啟用此工具時,其會監看資源受限的未排程 Pod,並自動增加節點數目以符合需求。

此圖顯示叢集自動調整程式的運作方式。

若有叢集容量未使用達指定的時間長度,叢集自動調整程式也可以減少叢集中的節點數目。 符合此條件時,自動調整程式會封鎖 (讓節點無法用於排程新的工作負載) 並清空 (將現有的工作負載移至其他節點) 節點。 因此,排程於該節點中的所有 Pod 都會安全地移至其他節點。 這也可確保在此程序期間不會排程其他 Pod。 然後,會從集區中移除節點。

在某些情況下,叢集自動調整程式無法移除節點,因為 Pod 無法從該節點中移出。 這些情況包括:

  • Pod 會直接使用 YAML 檔案來加以建立,且不會繫結至任何控制器 (例如 Deployments 或 ReplicaSets)。
  • 「Pod 中斷預算」(PDB) 條件過於嚴苛,且不允許 Pod 的數目低於特定閾值。
  • Pod 具有該特定節點的節點選取器,或具有會使其無法移至其他位置的節點相似性。

啟用自動調整時,手動叢集調整便會停用。

檢定您的知識

1.

叢集自動調整程式與 HPA 有何不同?

2.

為什麼生產環境必須要有叢集自動調整程式?

3.

在下列哪一種情況下,叢集無法移除節點?