設計工作負載區隔

本文概要說明 Google Distributed Cloud (GDC) 實體隔離環境中的工作負載管理。本文涵蓋下列主題:

雖然我們建議採用部分工作負載部署設計,但您不一定要完全按照規定執行。每個 GDC 宇宙都有獨特的需求和考量,必須逐一滿足。

本文適用於平台管理員群組中的 IT 管理員,負責管理機構內的資源;也適用於應用程式運算子群組中的應用程式開發人員,負責在 GDC 宇宙中開發及維護應用程式。

詳情請參閱 GDC air-gapped 的目標對象說明文件

工作負載部署位置

在 GDC 平台上,部署虛擬機器 (VM) 工作負載和容器工作負載的操作不同。下圖說明貴機構資料層中的工作負載分離。

機構資料層中的工作負載區隔。

以 VM 為基礎的工作負載會在 VM 內運作。反之,容器工作負載則是在 Kubernetes 叢集中運作。VM 與 Kubernetes 叢集之間的基本區隔,可為 VM 工作負載和容器工作負載提供隔離界線。詳情請參閱「資源階層」。

以下各節將介紹每種工作負載類型的差異,以及部署生命週期。

VM 型工作負載

您可以建立 VM 來代管以 VM 為基礎的工作負載。您可以選擇多種 VM 機器類型和大小,盡可能滿足 VM 型工作負載的需求。您必須在專案中建立 VM,專案可包含許多 VM 工作負載。VM 是專案的子項資源。詳情請參閱「VM 總覽」。

如果專案只包含以 VM 為基礎的工作負載,則不需要 Kubernetes 叢集。 因此,您不需要為以 VM 為基礎的工作負載佈建 Kubernetes 叢集。

容器型工作負載

您可以將容器型工作負載部署至 Kubernetes 叢集中的 Pod。Kubernetes 叢集包含下列節點類型:

  • 控制層節點:執行排程、etcd 和 API 伺服器等管理服務。

  • 工作站節點:執行 Pod 和容器應用程式。

Kubernetes 叢集架構

Kubernetes 叢集可附加至一或多個專案,但並非專案的子項資源。這是 Kubernetes 叢集與 VM 的根本差異。虛擬機器是專案的子項資源,而 Kubernetes 叢集是機構的子項資源,因此可以附加至多個專案。

在 Kubernetes 叢集內排程 Pod 時,GDC 會採用一般的 Kubernetes 排程、搶占和逐出概念。叢集內排定 Pod 的最佳做法會因工作負載需求而異。

如要進一步瞭解 Kubernetes 叢集,請參閱 Kubernetes 叢集總覽。如要進一步瞭解如何在 Kubernetes 叢集中管理容器,請參閱 GDC 中的容器工作負載

設計 Kubernetes 叢集的最佳做法

本節將介紹設計 Kubernetes 叢集的最佳做法:

請考量各項最佳做法,為容器工作負載生命週期設計彈性叢集。

為每個軟體開發環境建立獨立叢集

除了為每個軟體開發環境建立個別專案,我們也建議您為每個軟體開發環境設計個別的 Kubernetes 叢集。軟體開發環境是 GDC 宇宙中的一個區域,適用於對應指定生命週期階段的所有作業。舉例來說,假設貴機構有兩個軟體開發環境,分別命名為 developmentproduction,您可以為每個環境建立一組 Kubernetes 叢集,並視需要將專案附加至各個叢集。建議您在試產和正式環境生命週期中,將多個專案附加至 Kubernetes 叢集。

為每個軟體開發環境定義叢集時,會假設軟體開發環境中的工作負載可以共用叢集。然後將專案指派給適當環境的 Kubernetes 叢集。Kubernetes 叢集可能會進一步細分為多個節點集區,或使用 taint 來隔離工作負載

將 Kubernetes 叢集依軟體開發環境分開,即可隔離實際和非實際工作負載之間的資源耗用量、存取政策、維護事件,以及叢集層級的設定變更。

下圖顯示多個工作負載的 Kubernetes 叢集設計範例,這些工作負載涵蓋專案、叢集、軟體開發環境和機器類別。

GDC 設定

這個範例架構假設生產和開發軟體開發環境中的工作負載可以共用叢集。每個環境都有一組獨立的 Kubernetes 叢集,這些叢集會進一步細分為多個節點集區,以滿足不同機器類別的需求。

此外,設計多個 Kubernetes 叢集有助於執行下列容器作業:

  • 您將部分工作負載固定在特定 Kubernetes 版本,因此在不同版本中維護不同的叢集。
  • 您有一些工作負載需要不同的叢集設定,例如備份政策,因此您建立多個具有不同設定的叢集。
  • 您會平行執行叢集副本,以利進行破壞性版本升級或藍綠部署策略。
  • 您建構的實驗性工作負載可能會節流 API 伺服器,或導致叢集內的其他單點故障,因此您會將其與現有工作負載隔離。

下圖顯示一個範例,其中每個軟體開發環境都設定了多個叢集,這是因為有容器作業等需求 (如上一節所述)。

GDC 設定

減少建立的叢集數量

為有效運用資源,建議您設計最少數量的 Kubernetes 叢集,以滿足軟體開發環境和容器作業的分隔需求。每個額外叢集都會導致額外的資源耗用量,例如需要額外的控制層節點。因此,與多個小型叢集相比,大型叢集可執行多個工作負載,更有效率地運用基礎運算資源。

如果有多個設定類似的叢集,監控叢集容量和規劃跨叢集依附元件時,會增加維護負擔。

如果叢集即將達到容量上限,建議您在叢集中新增節點,而不是建立新叢集。

在叢集中建立較少的節點集區

為有效運用資源,建議您在 Kubernetes 叢集中設計較少但較大的節點集區。

如果您需要排定 Pod,但這些 Pod 需要的機器類別與其他 Pod 不同,設定多個節點集區就很有用。為工作負載所需的每個機器類別建立節點集區,並將節點容量設為自動調度,以有效運用運算資源。

後續步驟