本頁說明在 Google Kubernetes Engine (GKE) 中建立叢集時,可以進行的主要叢集設定選擇,無論您是使用Google Cloud 控制台、Google Cloud CLI 或 Terraform,您可以透過這些選項自訂各種叢集屬性和行為,以滿足您的需求,包括叢集是否可從公用網路存取,以及叢集接收版本升級的方式。
本指南中討論的許多選項在叢集建立後就無法變更。包括影響叢集可用性和網路的選項。如果需要變更這些選項,您必須建立新叢集,然後將流量遷移至該叢集,這可能會造成服務中斷。
由於許多叢集設定選項在叢集建立後就無法變更,因此請與貴機構的管理員和架構師、雲端架構師、網路管理員,或任何負責定義、實作及維護 GKE 和Google Cloud 架構的團隊,共同規劃及設計叢集設定。
本頁內容適用於管理員和架構師,他們會根據公司策略定義 IT 解決方案和系統架構。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Google Cloud
閱讀本頁面之前,請先熟悉下列概念,以及Kubernetes 基本概念:
叢集管理層級
討論叢集選項前,請務必先瞭解叢集所需的彈性、責任和控制程度。您需要的控制層級會決定要在 GKE 中使用的作業模式,以及您需要做出的叢集設定選擇。
在 GKE 中建立叢集時,您可以使用下列其中一種作業模式:
Autopilot (建議使用):提供已完全佈建及管理的叢集設定。Autopilot 叢集已預先設定最佳化叢集設定,可供正式環境工作負載使用。
標準:可彈性設定叢集基礎架構的進階設定。如果是使用標準模式建立的叢集,請決定生產環境工作負載所需的設定。
如要進一步瞭解這些模式和 Autopilot,請參閱 GKE 作業模式和 Autopilot 總覽。
如要詳細比較這兩種模式,請參閱「比較 GKE Standard 和 Autopilot」。
叢集設定選項
選擇作業模式後,請選取叢集所需的設定。Autopilot 叢集是由 Google Cloud 更全面地管理及設定,因此可用的設定選項比 Standard 叢集少。
所有叢集的設定選項可分為以下幾類:
- 名稱和其他中繼資料:每個叢集都必須有識別名稱,且在專案內不得重複。您也可以視需要新增叢集說明和標籤。
- 可用性和可擴充性:指定叢集控制層和節點的執行位置,以及是否要使用多個控制層副本。所有 Autopilot 叢集都是區域叢集,也就是說,這類叢集在一個區域內的多個運算區域中,有多個控制層。 Google Cloud
- 機群成員資格:選擇叢集是否要加入機群。
- 網路:網路選項,包括叢集所在的虛擬私有雲 (VPC) 網路和子網路,以及是否要允許從公開網路存取叢集。
- 版本和升級管理:使用發布版本,在升級這個叢集的軟體時,選擇偏好的新功能與穩定性平衡點,並設定維護期間和排除項目,選擇何時可以升級,何時不能升級。
- 安全性:包括叢集是否使用 Workload Identity Federation for GKE,以及叢集節點用於向Google Cloud進行驗證的服務帳戶。
- 叢集功能:為這個叢集啟用及設定其他 GKE 和Google Cloud 功能,包括備份和可觀測性。您也可以在標準模式中建立短期 Alpha 版叢集,試用 Alpha 版 Kubernetes 功能。
此外,標準叢集也提供下列類別的選項:
- 節點集區:指定叢集節點的詳細資料,包括節點集區、節點作業系統和節點大小。
以下各節將詳細介紹其中一些類別,特別是建立叢集後無法變更設定的選項。如需完整的設定選項清單,請參閱「設定參考資料」。
下表比較 Autopilot 和 Standard 叢集在幾個重要領域的可用選項:
| 叢集選項 | 模式 | |
|---|---|---|
| Autopilot | 標準 | |
| 供應情形類型 | 區域性 | 區域或Zonal |
| 發布管道 | 快速、一般或穩定 | 任何頻道 |
| 叢集版本 | 預設或其他可用版本 | 預設或其他可用版本 |
| 網路路由 | 虛擬私有雲原生 | 虛擬私有雲原生或使用路由 |
| 網路隔離 | 可自訂 | 可自訂 |
| Kubernetes 功能 | 製片說明 | 正式版或 Alpha 版 |
叢集可用性
您可以透過 GKE 建立叢集,滿足工作負載的可用性需求,並符合預算。您可以選擇地區叢集,這類叢集在 Google Cloud 地區的多個運算區域中有多個控制層副本;也可以選擇區域叢集,這類叢集在單一區域中只有一個控制層。Autopilot 叢集一律為區域叢集。
如要瞭解如何在標準模式中選擇要建立的叢集類型,請參閱「選擇地區或區域控制層」。
叢集建立後,就無法更新這些設定:區域叢集無法變成地區叢集,地區叢集也無法變成區域叢集。
如果是實際工作環境工作負載,請使用地區叢集,因為地區叢集的可用性通常高於區域叢集。如果是開發環境,請使用具有區域節點集區的區域叢集。如果叢集採用區域控制層和區域節點集區,費用與區域叢集相同。 如要進一步瞭解特定地區的注意事項,請參閱「地理位置與區域」一文。
地區性叢集
區域叢集具有多個控制層副本,分別在您指定的 Google Cloud 區域的多個可用區中執行。建立 Autopilot 或其他區域叢集時,一律需要指定區域。
只有區域標準叢集可以選擇叢集節點的執行區域。區域叢集的節點可在多個或單一區域中執行,視設定的節點位置而定。根據預設,GKE 會在控制層所在區域的三個可用區中,複製每個節點集區。建立區域標準叢集或新增節點集區時,您可以指定叢集節點執行的區域,變更預設設定。所有可用區均須與控制層位於同一個區域。
請使用區域叢集執行實際工作環境工作負載,因為區域叢集的可用性高於區域叢集。
- 如要建立地區標準叢集,請參閱「建立地區叢集」。
- 如要建立區域性 Autopilot 叢集,請參閱「建立 Autopilot 叢集」。
區域叢集建立後,就無法變更區域。
區域叢集
區域叢集在單一區域中只有一個控制層。叢集升級或控制層所在區域服務中斷時,工作負載仍會執行。不過,在控制層恢復可用之前,您無法設定叢集、節點和工作負載。您可以根據工作負載可用性需求,選擇在單一區域或多個區域中分配區域叢集的節點。
如要建立可用區叢集,請參閱「建立可用區叢集」。
節點的位置和分布情形
無論使用區域叢集或可用區叢集,您都能精確決定節點在可用區的分布位置。您可以為日後的所有節點集區設定預設區域,也可以指派或變更現有節點集區中節點的特定區域。
單一可用區叢集
單一可用區叢集 (可以是區域或可用區叢集) 會在位於單一可用區的節點上執行工作負載。如果該可用區發生服務中斷,所有工作負載都會無法使用。
區域叢集預設會建立為單一區域叢集,但您可以將這項設定更新為多區域叢集。
多區域叢集
多區域叢集 (可以是區域或區域叢集) 會在單一區域內的多個區域間分配節點,提高工作負載的可用性。這樣一來,您就能在區域內的多個可用區執行工作負載。如果您在多個可用區中執行工作負載,而某個可用區發生服務中斷,該可用區的工作負載就會中斷,但其他可用區的工作負載仍可正常運作。
將 GKE 節點分配到多個可用區時,如果節點需要與位於該區域其他可用區的對等互連節點通訊,可能會產生跨可用區網路輸出費用。
地區叢集預設會建立為多區域叢集,但您可以將這項設定更新為單一區域叢集。
AI 可用區
AI 可用區是專門用於 AI/機器學習訓練和推論工作負載的區域。這些可用區提供大量機器學習加速器容量。詳情請參閱AI 區域說明文件。
在 GKE 中使用 AI 區域前,請先考量下列特性:
- AI 可用區與標準可用區在實體上是分開的,可提供額外的儲存空間和電力。這種分離可能會導致延遲時間較長,但一般來說,AI/機器學習工作負載可以容忍這種情況。
- AI 可用區的尾碼會加上
ai標記。舉例來說,us-central1地區中的 AI 區域名稱為us-central1-ai1a。 - 目前僅支援 TPU VM。
- 叢集的控制層會在與 AI 可用區相同的區域內,於一或多個標準可用區中執行。
如要在 AI 區域中執行未附加 TPU 的 VM,必須符合下列條件:
- 您已在同一可用區中執行其他使用 TPU VM 的工作負載。
- 非 TPU VM 要不是 Spot VM、與預留項目綁定,就是節點集區的一部分,且具有特定的加速器與一般用途 VM 比例。
在同一區域中,AI 可用區與具有相同尾碼的標準可用區共用元件,例如網路連線和軟體推出。對於高可用性工作負載,建議您使用不同區域。舉例來說,請避免同時使用
us-central1-ai1a和us-central1-a來確保高可用性。
根據預設,GKE 不會在 AI 區域部署工作負載。如要使用 AI 專區,請設定下列其中一個選項:
- (建議) ComputeClasses:將最高優先順序設為在 AI 區域中要求隨選 TPU。您可以透過 ComputeClass 為工作負載定義優先順序清單。如需範例,請參閱「關於 ComputeClass」。
- 節點自動佈建:在 Pod 規格中使用
nodeSelector或nodeAffinity,指示節點自動佈建功能在 AI 可用區中建立節點集區。如果工作負載未明確指定 AI 區域,節點自動佈建功能只會考慮標準區域或--autoprovisioning-locations中的區域,建立新的節點集區。這項設定可確保未執行 AI/ML 模型的作業會留在標準可用區,除非您明確設定其他可用區。如需使用nodeSelector的資訊清單範例,請參閱「設定自動建立節點的預設區域」。 - GKE Standard:如果您直接管理節點集區,請在建立節點集區時,於
--node-locations旗標中使用 AI 區域。如需範例,請參閱「在 GKE Standard 中部署 TPU 工作負載」。
機群成員
如果貴機構使用多個叢集,您可以將叢集新增至機群 (Kubernetes 叢集的邏輯分組),簡化多叢集管理作業。建立機群後,貴機構的管理單位就能從個別叢集提升為整個叢集群組,並使用機群專用功能,例如多叢集 Ingress、 Config Sync 和 Policy Controller。
雖然您可以隨時將叢集新增至機群,但我們強烈建議您在建立叢集時,將新叢集註冊至機群。這是因為這些「機群原生」叢集是根據您選擇的機群層級預設設定建立,適用於多項企業功能,且已啟用建議的記錄和指標。如要進一步瞭解這些功能,請參閱下列指南:
叢集建立後可以更新這項設定,以註冊或取消註冊叢集,但我們不建議將含有即時工作負載的叢集從一個機群移至另一個機群。
如要進一步瞭解如何將叢集新增至機群,請參閱「建立機群,簡化多叢集管理作業」。
網路設定
建立 GKE 叢集時,您可以指定多項網路設定,包括叢集所在的網路、網路路由模式,以及是否要允許從公用網路存取叢集節點。
如果您不是網路管理員,請先諮詢貴機構的網路專家,再建立適用於正式環境的叢集,因為許多選項在叢集建立後就無法變更。如果您是網路管理員,可以參閱「關於 GKE 網路」一文,進一步瞭解 GKE 網路,並在「GKE 網路最佳做法」一文中,瞭解網路選項的最佳做法。本節僅說明部分可能的網路選項。
網路和子網路
叢集所屬的虛擬私有雲 (VPC) 網路會決定該叢集可以與哪些 Compute Engine 資源進行通訊。根據預設,GKE 叢集會在專案的預設網路中建立,但如果您或管理員已建立其他網路,也可以選擇該網路。如要讓叢集屬於特定虛擬私有雲子網路,請指定該子網路 (否則系統會使用預設子網路)。您也可以選擇指定要為 Pod 和 Service 使用該子網路內的特定 IP 位址範圍。
叢集建立後即無法更新這些設定。
網路區隔選項
您可以從下列兩方面著手,在叢集中自訂網路隔離:
控制層存取權:預設會啟用控制層的內部和外部端點,並停用 DNS 型端點。您可以選擇執行下列動作:
- 停用外部和內部端點,只使用 DNS 端點。
- 停用外部端點,即可防止外部用戶端存取。
- 啟用授權網路,控管哪些 IP 位址可連上控制層端點。
叢集網路設定:您可以選擇在叢集中啟用私人節點,完全將工作負載與公用網路隔離。您可以為整個叢集啟用私人節點,也可以在節點集區 (適用於 Standard) 或工作負載 (適用於 Autopilot) 層級啟用。在節點集區或工作負載層級啟用私有節點,會覆寫叢集層級的任何節點設定。
叢集建立後,您仍可變更這些設定。
如要進一步瞭解網路隔離,請參閱「關於自訂網路隔離」和「自訂網路隔離」。
使用 Cloud NAT 為 GKE Pod 提供公開 IP 位址資源的存取權。Cloud NAT 可提升叢集的整體安全防護機制,因為 Pod 不會直接暴露在網際網路中,但仍可存取面向網際網路的資源。
虛擬私有雲原生和路徑導向叢集
在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分叢集。使用別名 IP 位址的叢集稱為「虛擬私人雲端原生叢集」。使用 Google Cloud 路由的叢集稱為「使用路由的叢集」。
根據預設,所有新的 GKE 叢集都會使用虛擬私有雲原生路由,這是我們建議的選項。您可以在建立叢集時變更這項設定,只以標準模式建立路徑導向叢集。叢集建立後即無法更新這項設定。
如要進一步瞭解虛擬私有雲原生叢集及其優點 (包括任何特殊需求),請參閱「虛擬私有雲原生叢集」。
為叢集使用虛擬私有雲原生網路模式。這是 Autopilot 叢集的預設值。
版本和升級
有了發布版本,您便能在可用功能與穩定性之間權衡,GKE 會根據您的選擇挑選合適的叢集軟體版本。建立叢集時,您可以選擇所需的發布管道。新叢集 (包括 Autopilot 和 Standard) 預設會註冊 Regular 發布版本,但您也可以在建立叢集時選擇特定版本。
Autopilot 叢集一律會使用發布版本。標準叢集預設會使用發布管道,但您可以選擇不將叢集註冊至發布管道 (不過我們不建議這麼做,因為這樣您對叢集功能的存取權會受到更多限制)。
無論是否已註冊發布管道,GKE 都會陸續自動升級所有叢集。發布版本中有新版本時,GKE 會自動升級叢集的控制層和節點。您可以透過維護期間和排除時段,控管升級時間和範圍。
您隨時可以變更叢集的發布管道。
如要瞭解即將進行的自動升級,請參閱 GKE 版本資訊。
指定 GKE 發布版本,在可用功能與穩定性之間權衡,為叢集選用合適的版本。使用維護期間和排除時段,控管自動升級的時間和範圍。
Alpha 版功能 (僅限標準叢集)
Kubernetes 的新功能會視其開發狀態,列為 Alpha 版、測試版或穩定版。在大部分情況下,GKE 叢集會含有列為 Beta 版或穩定版的 Kubernetes 功能。
如要試用尚未準備好用於正式環境的最新功能,請使用特殊的 GKE Alpha 版叢集。Alpha 版叢集會啟用所有 Kubernetes Alpha 版 API (有時稱為功能閘道)。您可以使用 Alpha 版叢集,搶先測試及驗證 Kubernetes 功能。實際工作環境工作負載不支援 Alpha 版叢集,且無法升級或新增至發布管道,並會在 30 天內到期。
Alpha 版功能不適用於 Autopilot 叢集。
如要建立 Alpha 版叢集,請參閱「建立 Alpha 版叢集」。
安全性設定
GKE 提供多項安全性設定,您可以在建立叢集時指定。包括加密設定、二進位授權等安全功能、叢集節點要使用的服務帳戶 (下一節會詳細說明),以及叢集是否使用 Workload Identity Federation for GKE。
與其他設定一樣,您應先諮詢專家同事 (在本例中為貴機構的安全專家),再建立可供正式環境使用的叢集。如要進一步瞭解 GKE 安全性,請參閱「安全性總覽」和「強化叢集安全防護」。
節點服務帳戶
GKE 會使用附加至節點的 IAM 服務帳戶,執行記錄和監控等系統工作。這些節點服務帳戶至少須具備專案的 Kubernetes Engine 預設節點服務帳戶 (roles/container.defaultNodeServiceAccount) 角色。根據預設,GKE 會使用專案中自動建立的Compute Engine 預設服務帳戶做為節點服務帳戶。
如果貴機構強制執行iam.automaticIamGrantsForDefaultServiceAccounts機構政策限制,專案中的預設 Compute Engine 服務帳戶可能不會自動取得 GKE 的必要權限。
如果您在專案或機構中的其他函式使用 Compute Engine 預設服務帳戶,該服務帳戶的權限可能超出 GKE 的需求,進而導致安全風險。
建立 Autopilot 模式叢集或 Standard 模式節點集區後,就無法變更服務帳戶。
節點集區設定 (僅限 Standard 叢集)
如您在叢集管理總覽和 GKE 作業模式中瞭解,如果叢集使用 Autopilot,您就不必擔心節點設定,因為 GKE 會為您設定節點。Autopilot 叢集節點皆由 GKE 全面代管,且都使用相同的節點作業系統 (OS)。
如果您選擇建立標準叢集,可以在建立叢集時指定多個節點選項,包括:
- 您要使用的節點集區名稱、數量、大小和位置;節點集區是叢集中共用一般設定的節點群組。
- 要用於新節點的節點 OS。
- 是否要為節點使用臨時現成 VM。
- 您要用於節點的 Compute Engine 機器類型。
- 您要用於節點的服務帳戶,如安全性設定所述。
叢集建立後,您可以變更部分節點集區設定,但所有標準叢集都必須至少有一個節點集區。建立標準叢集時,如果未指定節點數量和機器類型,叢集的預設節點集區會在每個叢集區域中包含三個節點,並使用預設節點映像檔 cos_containerd 和一般用途機器類型。
如要進一步瞭解節點集區設定,請參閱「關於節點集區」和「新增及管理節點集區」。
設定參考資料
如需可能的設定選項完整清單,請參閱下列參考指南:
gcloud container clusters create-auto: Autopilot 叢集的 Google Cloud CLI 參考資料gcloud container clusters create:標準叢集的 Google Cloud CLI 參考資料google_container_cluster: Terraform 參考資料
後續步驟
- 進一步瞭解 GKE 叢集架構中的叢集架構
- 如要並列比較 Standard 和 Autopilot 叢集,請參閱「比較 GKE Standard 和 Autopilot」。
- 開始建立叢集: