使用 AKS 設定多個節點並啟用調整為零的能力

已完成

Azure Kubernetes Service 可讓您建立不同的節點集區,將特定工作負載與每個節點集區中正在執行的節點進行比對。 比對工作負載與節點的程式可讓您規劃計算耗用量並優化成本。

貴公司的無人機追蹤解決方案會以多個容器化應用程式與服務的形式部署於 Azure Kubernetes Service (AKS) 上。 您的小組開發了新的預測性模型化服務,用於處理極端天氣狀況中的飛行路徑資訊,並建立最佳飛行路線。 此服務需要 GPU 型虛擬機器 (VM) 支援,而且僅會在一週內的特定日期執行。

您想要設定專門用來處理飛行路徑資訊的叢集節點集區。 此程式每天只會執行數小時,而您想要使用 GPU 型節點集區。 不過,您只想在使用節點時支付其費用。

讓我們看看節點集區和 AKS 如何使用節點,以及如何調整節點集區中的節點計數。

什麼是節點集區?

節點集區會描述在 AKS 叢集中具有相同設定的節點群組。 這些節點包含執行您應用程式的基礎 VM。 您可以在 AKS 受控 Kubernetes 叢集上建立兩種類型的節點集區:

  • 系統節點集區

  • 使用者節點集區

系統節點集區

系統節點集區會裝載構成叢集控制平面的重要系統 Pod。 系統節點集區允許只使用 Linux 作為節點 OS,而且只執行 Linux 型工作負載。 系統節點集區中的節點會保留給系統工作負載使用,且通常不會用來執行自訂工作負載。 每個 AKS 叢集都必須至少包含一個至少有一個節點的系統節點集區,而您必須定義節點的底層 VM 大小。

使用者節點集區

使用者節點集區會支援工作負載,且您可指定 Windows 或 Linux 作為節點的作業系統。 您也可以定義節點的底層 VM 大小,並執行特定的工作負載。 例如,您的無人機追蹤解決方案有一個批次處理服務,您會將其部署到具有一般用途 VM 設定的節點集區。 新的預測性模型化服務需要較高容量的 GPU 架構 VM。 您決定設定不同的節點集區,並將其設定為使用已啟用 GPU 的節點。

節點集區中的節點數目

在節點集區中,您最多可以設定 100 個節點。 不過,您選擇要設定的節點數目會取決於針對每個節點執行的 Pod 數目。

例如,在系統節點集區中,必須將在單一節點上執行的最大 Pod 數目設定為 30。 此值可保證有足夠的空間,可執行對叢集健康狀態至關重要的系統 Pod。 當 Pod 數目超過此最小值時,集區中即需要新節點來排程額外的工作負載。 基於這個理由,系統節點集區在集區中至少需要一個節點。 針對實際執行環境,對於系統節點集區的建議節點計數是至少三個節點。

使用者節點集區是設計來執行自訂工作負載,且沒有 30 個 Pod 的需求。 使用者節點集區可讓您將集區的節點計數設定為零。

在 AKS 叢集中管理應用程式需求

在 AKS 中,當您增加或減少 Kubernetes 叢集中的計算資源數量時,您會 調整規模。 您可以調整需要執行的工作負載實例數目,或調整這些工作負載執行所在的節點數目。 您可以使用兩種方式之一,在 AKS 管理的叢集上調整工作負載。 第一個選項是視需要手動調整 Pod 或節點。 第二個選項是透過自動化,這種情況下您可以使用水平 Pod 自動調整程式來調整 Pod,並使用叢集自動調整程式來調整節點。

如何手動調整節點集區

如果您執行的工作負載會於特定已知間隔以特定持續時間執行,則手動調整節點集區大小是控制節點成本的不錯方式。

假設預測模型化服務需要 GPU 型節點集區,並在中午每天執行一小時。 您可以使用特定的 GPU 架構節點來設定節點集區,並且在未使用叢集時,將節點集區調整為零個節點。

以下是您可用來建立節點集區的 az aks node pool add 命令範例。 請注意 --node-vm-size 參數,此參數會為集區中的節點指定 Standard_NC6 GPU 架構 VM 大小。

az aks nodepool add \
    --resource-group resourceGroup \
    --cluster-name aksCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

當集區準備就緒時,您可以使用 az aks nodepool scale 命令,將節點集區調整為零個節點。 請注意,已將 --node-count 參數設定為零。 以下是命令範例:

az aks nodepool scale \
    --resource-group resourceGroup \
    --cluster-name aksCluster \
    --name gpunodepool \
    --node-count 0

如何自動調整叢集

Diagram that shows how the cluster autoscaler adds nodes and how the horizontal pod autoscaler adds pods.

AKS 會使用 Kubernetes 叢集自動調整程式來自動調整工作負載。 叢集可以使用兩個選項進行調整:

  • 水平 Pod 自動調整程式

  • 叢集自動調整程式

讓我們看一下每一個選項,從水平 Pod 自動調整程式開始。

水平 Pod 自動調整程式

使用 Kubernetes 水平 Pod 自動調整程式來監視叢集上的資源需求,並自動調整工作負載複本的數目。

Kubernetes 計量伺服器會從 AKS 叢集上執行的控制器、節點及容器收集記憶體與處理器計量。 存取此資訊的一種方式是使用計量 API。 水平 Pod 自動調整程式每隔 30 秒會檢查計量 API 一次,以決定您的應用程式是否需要更多執行個體才能符合所需的需求。

假設公司也有可排程無人機飛行路徑的批次處理服務。 您注意到服務會因要求而淹沒,並積存了交付專案,導致客戶的延遲和挫折。 提高批次處理服務複本的數目,將能及時處理訂單。

為了解決此問題,您會設定水平 Pod 自動調整程式,以便在需要時提升服務複本數目。 當批次要求數目減少時,它會減少服務複本的數目。

不過,水平 Pod 自動調整程式將只會在叢集的已設定節點集區中,調整可用節點上的 Pod。

叢集自動調整程式

當水平 Pod 自動調整程式無法在節點集區的現有節點上排程另一個 Pod 時,即會觸發資源限制式。 您需要使用叢集自動調整程式,來調整限制式時間叢集節點集區中的節點數目。 叢集自動調整程式會檢查定義的計量,並根據所需的運算資源來擴大或縮小節點數目。

叢集自動調整程式會與水平 Pod 自動調整程式一起使用。

叢集自動調整程式會同時監視擴大和縮小事件,並允許 Kubernetes 叢集在資源需求變更時,變更節點集區中的節點計數。

您可以使用不同的調整規則來設定每個節點集區。 例如,您可能只想要將一個節點集區設定為允許自動調整,或者您可以將節點集區設定為只調整為特定數目的節點。

重要

當您在節點集區上啟用叢集自動調整程式時,就會失去將節點計數調整為零的能力。 相反地,您可以將最小計數設定為零,以節省叢集資源。

檢定您的知識

1.

假設您的軟體解決方案具有三個重要元件。 第一個元件是 Web 應用程式。 第二個是處理線上訂單的服務。 第三個是影片轉譯和分析服務,其只有在必要時才會執行,而且需要 GPU 架構的 VM。 若要將成本最佳化,您應該要在 Azure Kubernetes Service (AKS) 叢集中部署多少個節點集區來管理該解決方案?

2.

完成下列敘述。 Kubernetes 叢集自動調整程式會調整...