設計工作負載區隔

Google Distributed Cloud (GDC) 實體隔離方案的工作負載隔離功能,可讓您跨專案和 Kubernetes 叢集,分隔容器和虛擬機器 (VM) 應用程式。規劃環境邊界有助於控管存取權政策、限制維護作業的影響,以及最佳化節點容量。您可以調整這些架構模式,以符合每個 GDC Universe 的特定需求。

本文適用於平台管理員群組中負責管理組織資源的 IT 人員,以及應用程式操作員群組中負責維護服務的開發人員。詳情請參閱「GDC 實體隔離方案的目標對象」說明文件。

工作負載的部署位置

在 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 伺服器。

  • worker 節點:執行 Pod 和容器應用程式。

Kubernetes 叢集架構

Kubernetes 叢集有兩種設定類型:

  • 共用叢集:組織範圍的 Kubernetes 叢集,可跨多個專案,且不受單一專案管理,而是附加至這些專案。
  • 標準叢集:專案範圍內的 Kubernetes 叢集,可管理專案中的叢集資源,無法跨多個專案。

詳情請參閱「Kubernetes 叢集設定」。

Kubernetes 叢集提供多種資源階層選項,因為共用叢集屬於組織範圍,而標準叢集屬於專案範圍。這是 Kubernetes 叢集與 VM 的根本差異。VM 是專案的子項資源,無法設定在專案外運作。如要進一步瞭解如何設計 Kubernetes 叢集基礎架構,請參閱「設計 Kubernetes 叢集的最佳做法」。

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

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

設計 Kubernetes 叢集的最佳做法

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

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

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

除了為每個軟體開發環境建立獨立專案,我們也建議您為每個軟體開發環境設計獨立的 Kubernetes 叢集。軟體開發環境是 GDC 宇宙中的一個區域,用於執行與指定生命週期階段相對應的所有作業。舉例來說,如果貴組織有三個軟體開發環境,分別名為 development、staging 和 production,您可以為每個環境建立一組獨立的 Kubernetes 叢集,並根據需求將專案附加至各個叢集。

建議您在範圍限於單一專案的試產生命週期中使用標準叢集,這樣一來,與測試相關的任何破壞性程序都能與正式環境專案隔離,而共用叢集則適合用於可跨越多個專案的正式環境。共用叢集可託管跨多個專案的正式環境工作負載,提供共用部署區域,讓範圍限定在單一專案的標準叢集,能直接將工作負載升級至正式環境。

為每個軟體開發環境定義標準叢集,假設軟體開發環境中的正式生產前工作負載僅限於該叢集。Kubernetes 叢集可能會進一步細分為多個節點集區,或使用污點隔離工作負載。

依軟體開發環境區分 Kubernetes 叢集,即可在正式和非正式工作負載之間,隔離資源消耗、存取權政策、維護事件和叢集層級設定變更。

下圖顯示 Kubernetes 叢集設計範例,適用於跨專案、叢集、軟體開發環境和不同節點集區提供的機器類別的多個工作負載。

跨多個軟體開發環境的 GDC 叢集設定。

這個範例架構假設開發、測試和正式版軟體開發環境中的工作負載可以共用叢集。每個環境都有獨立的標準叢集,並進一步細分為多個節點集區,以滿足不同機器類別的需求。共用叢集涵蓋所有軟體開發環境,為所有環境提供共同的部署區域。

或者,為每個軟體開發環境設計多個標準叢集,有助於執行容器作業,例如下列情境:

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

您必須根據容器作業設定的需求,調整軟體開發環境。

減少叢集數量

為有效利用資源,建議您設計最少數量的 Kubernetes 叢集,以滿足區隔軟體開發環境和容器作業的需求。每增加一個叢集,就會產生額外的資源消耗,例如需要額外的控制層節點。因此,相較於多個小型叢集,具有多個工作負載的大型叢集能更有效率地運用基礎運算資源。

如果有多個叢集的設定相似,則監控叢集容量和規劃跨叢集依附元件時,會產生額外的維護負擔。

如果叢集容量即將用盡,建議您在叢集中新增節點,而非建立新叢集。

在叢集內建立較少節點集區

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

如需排定 Pod,且該 Pod 需要與其他 Pod 不同的機器類別,則設定多個節點集區會很有幫助。為工作負載所需的每個機器類別建立節點集區,並將節點容量設為自動調度資源,以便有效率地使用運算資源。

後續步驟