預估叢集大小 - 節點

已完成

您現在需要確定您需要的虛擬機器 (VM) 節點種類,以及需要執行多少個節點。

您需要何種大小的虛擬機器?

在 Azure Kubernetes Service (AKS) 中,叢集中的每個節點都是 Azure VM。 虛擬機器有各種規格,可協助支援不同類型應用程式的需求。 某些應用程式可能需要更多處理能力或記憶體、或更快的儲存體。 您需要選取符合應用程式需求的 VM 類別和執行個體。

您應確定該類型具有足夠的記憶體和處理能力,可供您的應用程式使用。 請記住,並非所有的記憶體和處理能力都可供您的應用程式使用。 作業系統和 Kubernetes 系統元件也需要用到一些這種能力。 AKS 會自動保留一定數量的記憶體和處理能力,以確保這些重要的系統元件可以依需求運作。

部署為 AKS 叢集一部分的預設 VM 類型是 D2 v3 一般用途虛擬機器,這是具有 8 GB 記憶體的雙核心 VM。 AKS 會保留 100 millicores 的處理器和 3.55 GiB 的記憶體,讓您的應用程式可使用 1,900 millicores (1.9 核心) 和 5.45Gi 的記憶體。

提示

保留的處理器和記憶體數量會根據您選取的 VM 類型而有所不同。 此數量會隨著 VM 大小的增加而按比例變小。

另一個考量是擱置資源。 設想您將三個應用程式部署到 D2 v3 節點。 其中每個應用程式都需要 600 millicores 的處理器和 500Mi 的記憶體。 部署這些應用程式之後,還剩下 100 millicores 的處理器,且大約有 2.05 GiB 的未使用記憶體。 如果您部署了應用程式的第四個執行個體,則需要將其傳送至新的節點,因為剩餘的 100 millicores 並不足夠。 不過,這會在節點上留下 2 GiB 的記憶體且可能無法使用。 該記憶體資源稱為擱置

理想的 VM 選擇是具有足夠容量可執行工作負載,而且不會留下擱置資源。 如果工作負載會動態地擴大或縮小,您需要足夠的資源來應付日常使用方式情節,但在必要時可彈性地加以擴大。

您需要幾個節點?

您的應用程式應隨時可供使用,而且能夠處理基礎節點失敗。 您可以將多個應用程式複本分散到多個節點,以提高復原能力。

AKS 具有節點集區,這些是相同類型的 VM 群組。 您可以有多個節點集區。 例如,您可以有包含一般用途 VM 的節點集區、具有記憶體最佳化 VM 的節點集區,以及具有配備了 GPU 之 VM 的節點集區。 接著,您可以使用原生的 Kubernetes 排程功能,確保工作負載會部署到適當的節點集區和虛擬機器類型。

節點集區可以支援下列兩種模式之一:系統使用者系統節點集區會執行重要的系統 Pod,這些 Pod 對 Kubernetes 叢集的作業至關重要,包括儲存體驅動程式、DNS 或計量伺服器等服務。 使用者節點集區則會執行您的應用程式。

在預設設定中,AKS 叢集包含單一系統節點集區,可用於執行所有項目。 如果需要,您可以新增額外的系統或使用者節點集區,並將您的應用程式 Pod 設定為專門在使用者節點集區中執行。 重要的系統 Pod 只會在系統節點集區中執行。 使用系統及使用者節點集區可防止設定不正確的應用程式,以致影響重要系統服務的作業並可能導致叢集失敗。

Kubernetes 也可以視需要新增或移除節點。 如果您打算使用此功能,您需要針對 Kubernetes 可擴大的節點數目定義上限。 然後,針對該數目上限規劃您的網路設計。 請記住,您需要為每個叢集至少考慮一個額外的節點,才能讓更新流程正常執行。

提示

您可以設定特定時間更新的節點數目,而預設值是一個。 一次升級多個節點可減少升級叢集所需要的整體時間。 您需要將額外的節點納入規劃的考量中。

您應該執行多少個節點?

若要確定要執行的節點數目,您需要了解應用程式的處理器和記憶體需求。 開發小組已提供效能測試的結果,以及服務所需的處理器和記憶體詳細資料。 該結果包括基準需求,以及在忙碌期間會達到的最大數量:

服務 處理器最小值/最大值 記憶體最小值/最大值
網站前端 250 m / 1000 m 250 Mi / 1 Gi
身分識別 API 100 m / 500 m 250 Mi / 500 Mi
目錄 API 500 m - 1000 m 1 Gi / 1 Gi
訂單 API 100 m - 1000 m 100 Mi / 1 Gi
訂單協助程式 100 m - 1000 m 100 Mi / 1 Gi
購物車 API 100 m - 1000 m 500 Mi / 500 Mi
行銷 API 250 m - 750 m 500 Mi / 1 Gi
位置 API 100 m - 500 m 100 Mi / 500 Mi

提示

  • Kubernetes 會以 millicores (核心的千分之一) 來測量處理器使用量。 因此,100m 等於核心的十分之一,而 1000m 等於一個單一處理器核心。
  • 您可以透過許多方式測量記憶體。 效能測試結果圖表中的範例會使用 Mi 和 Gi,這是兩個對等 Mb 和 GB 的乘冪。 500Mi 一般指 500 MB,而 1Gi 一般指 1 GB。

調整節點的大小

您已確定每個服務應該執行的複本最小數目,以及每個服務所需處理器核心和記憶體的最小數目。 此計算會提供您以 1.5 個核心和 2.8Gi 記憶體作為起點的圖表。 當應用程式擴大至其複本數目上限,並使用其處理器核心和記憶體數量上限時,它需要 53 個核心和 50 GB 的記憶體。

本案例中的工作負載為 CPU 密集型。 如果您使用預設的 D2 v3 一般用途 VM,您會需要大量的 VM 來滿足工作負載的處理器需求。 此設定會導致 VM 上有大量未使用的記憶體。 讓我們考慮一種適用於計算密集型工作負載的 VM 類型。 例如,Fsv2 系列中的某些項目需要較少的 VM 即可符合處理器需求,而且未使用的記憶體數量較少。

F8s v2 VM 類型具有 8 個核心和 16 GB 的記憶體。 AKS 資源保留可讓您針對每個節點擁有 7820 millicores 和 12.65Gi。 以最大規模執行時,我您會需要七部 VM 來處理工作負載。

現在,您需要查看網路。