本文概要說明 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 叢集,可管理專案內的叢集資源,但無法跨越多個專案。
詳情請參閱「Kubernetes 叢集設定」。
Kubernetes 叢集提供各種資源階層選項,因為共用叢集是機構範圍,標準叢集則是專案範圍。這是 Kubernetes 叢集與 VM 的根本差異。虛擬機器是專案的子項資源,無法設定在專案外運作。如要進一步瞭解如何設計 Kubernetes 叢集基礎架構,請參閱設計 Kubernetes 叢集的最佳做法。
在 Kubernetes 叢集內排程 Pod 時,GDC 會採用一般的 Kubernetes 排程、搶占和逐出概念。叢集內排定 Pod 的最佳做法會因工作負載需求而異。
如要進一步瞭解 Kubernetes 叢集,請參閱 Kubernetes 叢集總覽。如要進一步瞭解如何在 Kubernetes 叢集中管理容器,請參閱 GDC 中的容器工作負載。
設計 Kubernetes 叢集的最佳做法
本節將介紹設計 Kubernetes 叢集的最佳做法:
請考量每項最佳做法,為容器工作負載生命週期設計彈性叢集。
為每個軟體開發環境建立獨立的叢集
除了為每個軟體開發環境建立個別專案,我們也建議您為每個軟體開發環境設計個別的 Kubernetes 叢集。軟體開發環境是 GDC 宇宙中的一個區域,適用於與指定生命週期階段對應的所有作業。舉例來說,如果貴機構有三個軟體開發環境,分別命名為 development、staging 和 production,您可以為每個環境建立一組 Kubernetes 叢集,並視需要將專案附加至各個叢集。
建議您在試產生命週期中使用標準叢集,並將範圍限定在單一專案,這樣與測試相關的任何破壞性程序,都能與正式專案隔離。共用叢集則適合用於可跨越多個專案的正式環境。共用叢集可做為多個專案的生產工作負載主機,提供共用部署區域,讓範圍限定於單一專案的標準叢集,可直接將工作負載升級至生產環境。
為每個軟體開發環境定義標準叢集時,會假設軟體開發環境中的前置製作工作負載僅限於該叢集。Kubernetes 叢集可能會進一步細分為多個節點集區,或使用 taint 隔離工作負載。
將 Kubernetes 叢集依軟體開發環境分開,可隔離實際和非實際工作負載之間的資源耗用量、存取政策、維護事件,以及叢集層級的設定變更。
下圖顯示多個工作負載的 Kubernetes 叢集設計範例,這些工作負載涵蓋專案、叢集、軟體開發環境,以及不同節點集區提供的機器類別。

這個範例架構假設開發、測試和正式版軟體開發環境中的工作負載可以共用叢集。每個環境都有各自的標準叢集,這些叢集會進一步細分為多個節點集區,以滿足不同的機器類別需求。共用叢集涵蓋所有軟體開發環境,為所有環境提供通用的部署區域。
此外,為每個軟體開發環境設計多個標準叢集,有助於執行下列容器作業:
- 您將部分工作負載固定在特定 Kubernetes 版本,因此在不同版本中維護不同的叢集。
- 您有一些工作負載需要不同的叢集設定,例如備份政策,因此您建立多個具有不同設定的叢集。
- 您會平行執行叢集副本,以利進行破壞性版本升級或藍綠部署策略。
- 您要建構實驗性工作負載,但這項工作負載可能會限制 API 伺服器或其他叢集內的單點故障,因此您會將其與現有工作負載隔離。
您必須根據容器作業設定的需求,調整軟體開發環境。
減少建立的叢集數量
為有效運用資源,建議您設計最少數量的 Kubernetes 叢集,以滿足軟體開發環境和容器作業的分隔需求。每個額外叢集都會導致額外的資源耗用量,例如需要額外的控制層節點。因此,與多個小型叢集相比,大型叢集可執行多個工作負載,更有效率地運用基礎運算資源。
如果有多個設定類似的叢集,監控叢集容量和規劃跨叢集依附元件時,會增加維護負擔。
如果叢集即將達到容量上限,建議您在叢集中新增節點,而不是建立新叢集。
在叢集中建立較少的節點集區
為有效運用資源,建議您在 Kubernetes 叢集中設計較少但較大的節點集區。
如果您需要排定 Pod,但這些 Pod 需要的機器類別與其他 Pod 不同,設定多個節點集區就很有用。為工作負載所需的每個機器類別建立節點集區,並將節點容量設為自動調度,以有效運用運算資源。