在 Azure Kubernetes Service (AKS) 中調整應用程式的選項

在 Azure Kubernetes Service (AKS) 中執行應用程式時,您可能需要增加或減少計算資源的數量。 當您變更擁有的應用程式實例數目時,您可能需要變更基礎 Kubernetes 節點的數目。 您也需要布建大量額外的應用程式實例。

本文介紹核心 AKS 應用程式調整概念,包括手動調整 Pod 或節點、使用水準 Pod 自動調整程式、使用叢集自動調整程式,以及與Azure 容器執行個體 (ACI) 整合。

手動調整 Pod 或節點

您可以手動調整複本或 Pod,以及節點,以測試應用程式如何回應可用資源和狀態的變更。 手動調整資源可讓您定義一組資源,以維護固定成本,例如節點數目。 若要手動調整,您需要定義複本或節點計數。 然後 Kubernetes API 會根據該複本或節點計數排程建立其他 Pod 或清空節點。

縮小節點時,Kubernetes API 會呼叫繫結至叢集所用計算類型的相關 Azure 計算 API。 例如,針對建置在 虛擬機器擴展集 上的叢集,選取要移除之節點的邏輯取決於虛擬機器擴展集 API。 若要深入瞭解如何選取節點以在相應減少時移除,請參閱虛擬機器擴展集常見問題

若要開始手動調整 Pod 和節點,請參閱在 AKS 中調整應用程式

水平 Pod 自動調整程式

Kubernetes 使用水準 Pod 自動調整程式 (HPA) 來監視資源需求,並自動調整 Pod 數目。 根據預設,HPA 每隔 15 秒檢查計量 API 是否有複本計數的任何必要變更,而 Metrics API 每隔 60 秒就會從 Kubelet 擷取資料。 因此,HPA 每隔 60 秒更新一次。 需要進行變更時,複本的數目會據以增加或減少。 HPA 適用于已部署 Kubernetes 1.8+ 計量伺服器的 AKS 叢集。

Kubernetes 水平 Pod 自動調整

當您為指定的部署設定 HPA 時,您可以定義可執行檔複本數目下限和最大值。 您也會根據任何調整決策定義要監視的計量,例如 CPU 使用量。

若要開始使用 AKS 中的水平 Pod 自動調整程式,請參閱 AKS 中的自動調整 Pod

調整事件中的冷卻時間

由於 HPA 會每隔 60 秒有效更新一次,因此在進行另一次檢查之前,先前的縮放事件可能尚未順利完成。 此行為可能會導致 HPA 變更先前調整事件前的複本數目,才能接收應用程式工作負載,以及據以調整的資源需求。

若要將競爭事件降到最低,則會設定延遲值。 這個值會定義 HPA 必須在調整事件之後等候多久,才能觸發另一個縮放事件。 此行為可讓新的複本計數生效,並讓計量 API 反映分散式工作負載。 從 Kubernetes 1.12 起,相應增加事件沒有任何延遲,不過,相應縮小事件的預設延遲為5 分鐘

叢集自動調整程式

為了回應變更的 Pod 需求,Kubernetes 叢集自動調整程式會根據節點集區中要求的計算資源來調整節點數目。 根據預設,叢集自動調整程式每隔 10 秒會檢查計量 API 伺服器,找出節點計數中任何必要的變更。 如果叢集自動調整程式判斷需要變更,AKS 叢集中的節點數目會隨之增加或減少。 叢集自動調整程式會使用已啟用 Kubernetes RBAC 功能且執行 Kubernetes 1.10.x 或更高版本的 AKS 叢集。

Kubernetes 叢集自動調整程式

叢集自動調整程式通常會與 水準 Pod 自動調整程式一起使用。 結合時,水準 Pod 自動調整程式會根據應用程式需求增加或減少 Pod 數目,而叢集自動調整程式會調整節點數目以執行其他 Pod。

若要開始使用 AKS 中的叢集自動 調整程式,請參閱 AKS 上的叢集自動調整程式

擴增事件

如果節點沒有足夠計算資源可執行所需的 Pod,則該 Pod 將無法完成排程的程序。 除非節點集區內有額外的計算資源可以使用,否則無法啟動 Pod。

當叢集自動調整程式注意到因節點集區資源限制而無法排程 Pod 時,會增加節點集區內的節點數目,以提供額外的計算資源。 當這些額外的節點已成功部署且可供在節點集區內使用時,就會將 Pod 排程在節點上執行。

如果您必須快速調整應用程式,某些 Pod 會維持在等候排程的狀態,直到由叢集自動調整程式部署的其他節點可以接受排程的 Pod 為止。 對於具有高高載需求的應用程式,您可以使用虛擬節點和Azure 容器執行個體進行調整。

縮減事件

叢集自動調整程式也會針對最近未收到新排程要求的節點,監視 Pod 排程狀態。 此案例表示節點集區具有比必要更多的計算資源,而且可以減少節點數目。 根據預設,已排定 10 分鐘不再需要閾值的節點進行刪除。 當這種情況發生時,Pod 會排程在節點集區內的其他節點上執行,且叢集自動調整程式會減少節點的數目。

因為叢集自動調整程式在減少節點的數目時,Pod 會排程在不同節點上,所以您的應用程式可能會遇到一些中斷情況。 若要盡可能不中斷,請避免使用單一 Pod 執行個體的應用程式。

高載至 Azure 容器執行個體 (ACI)

若要快速調整您的 AKS 叢集,您可以與 Azure 容器執行個體 (ACI) 整合。 Kubernetes 有內建的元件,可調整複本和節點計數。 不過,如果您的應用程式需要快速調整, 水準 Pod 自動調整程式 可能會排程比節點集區中現有計算資源所能提供的 Pod 更多。 如果已設定,則此案例會觸發 叢集自動調整程式 在節點集區中部署其他節點,但可能需要幾分鐘的時間,這些節點才能成功布建,並允許 Kubernetes 排程器在其上執行 Pod。

Kubernetes 高載調整至 ACI

ACI 可讓您快速部署容器執行個體,不需要額外的基礎結構成本。 當您與 AKS 連線時,ACI 會變成您 AKS 叢集的安全邏輯擴充功能。 以虛擬 Kubelet為基礎的虛擬節點元件會安裝在 AKS 叢集中,以虛擬 Kubernetes 節點的形式呈現 ACI。 接著,Kubernetes 可以排程透過虛擬節點以 ACI 執行個體身分執行的 Pod,而非直接在 AKS 叢集中,以 VM 節點上的 Pod 身分執行。

您的應用程式不需要修改才能使用虛擬節點。 您的部署可以跨 AKS 和 ACI 進行調整,而且叢集自動調整程式會在 AKS 叢集中部署新節點時不會延遲。

虛擬節點會部署到與您 AKS 叢集相同虛擬網路中的其他子網路。 此虛擬網路組態可保護 ACI 與 AKS 之間的流量。 如同 AKS 叢集,ACI 實例是與其他使用者隔離的安全邏輯計算資源。

下一步

若要開始使用調整應用程式,請遵循 快速入門,使用 Azure CLI 建立 AKS 叢集。 然後,您可以使用下列資源,手動或自動調整 AKS 叢集中的應用程式:

如需有關 Kubernetes 及 AKS 核心概念的詳細資訊,請參閱下列文章: