叢集設定選項簡介

本頁說明在 Google Kubernetes Engine (GKE) 中建立叢集時,可以進行的主要叢集設定選擇,無論您是使用Google Cloud 控制台、Google Cloud CLI 或 Terraform,都適用本頁內容。您可以透過這些選項自訂各種叢集屬性和行為,以滿足您的需求,包括叢集是否可從公用網路存取,以及叢集接收版本升級的方式。

本指南中討論的許多選項在叢集建立後就無法變更。包括影響叢集可用性網路的選項。如果需要變更這些選項,您必須建立新叢集,然後將流量遷移至該叢集,這可能會造成中斷。

最佳做法

由於許多叢集設定選項在叢集建立後就無法變更,因此請與貴機構的管理員和架構師、雲端架構師、網路管理員,或任何負責定義、實作及維護 GKE 和Google Cloud 架構的團隊,共同規劃及設計叢集設定。

本頁面適用於管理員和架構師,他們會根據公司策略定義 IT 解決方案和系統架構。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。

閱讀本頁面之前,請先熟悉下列內容,以及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 會在控制層所在區域的三個可用區中,複製每個節點集區。建立區域標準叢集或新增節點集區時,您可以指定叢集節點執行的可用區,變更預設設定。所有可用區均須與控制層位於同一個區域。

請使用區域叢集執行正式環境工作負載,因為區域叢集的可用性高於區域叢集。

區域叢集建立後,您就無法變更其區域。

區域叢集

區域叢集在單一可用區中只有一個控制層。叢集升級或控制層所在可用區服務中斷時,工作負載仍能執行。不過,在控制層恢復可用之前,您無法設定叢集、節點和工作負載。您可以根據工作負載可用性需求,選擇將區域叢集的節點分配至單一區域或多個區域。

如要建立可用區叢集,請參閱「建立可用區叢集」。

節點的位置和分布

無論使用區域或地區叢集,您都能精確決定節點在各個區域的位置和分布情形。您可以為日後的所有節點集區設定預設區域,也可以指派或變更現有節點集區中節點的特定區域。

單一可用區叢集

單一可用區叢集 (可以是區域或可用區叢集) 只會在位於單一可用區的節點上執行工作負載。如果該可用區發生服務中斷,所有工作負載都會無法使用。

區域叢集預設會建立為單一區域叢集,但您可以將這項設定更新為多區域叢集。

多區域叢集

多區域叢集 (可以是區域或可用區叢集) 會在單一區域內的多個可用區之間分配節點,提高工作負載的可用性。這可讓您在區域內的多個可用區執行工作負載。如果您在多個可用區中執行工作負載,而某個可用區發生服務中斷,該可用區的工作負載就會中斷,但其他可用區的工作負載仍可正常運作。

將 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-ai1aus-central1-a 來確保高可用性。

根據預設,GKE 不會在 AI 區域中部署工作負載。如要使用 AI 專區,請設定下列其中一個選項:

  • (建議) ComputeClasses:將最高優先順序設為在 AI 可用區中要求隨選 TPU。您可以透過 ComputeClass 為工作負載定義優先順序清單。如需範例,請參閱「關於 ComputeClass」。
  • 自動佈建節點:在 Pod 規格中使用 nodeSelectornodeAffinity,指示自動佈建節點功能在 AI 可用區中建立節點集區。如果工作負載未明確指定 AI 可用區,節點自動佈建功能只會考慮標準可用區或 --autoprovisioning-locations 中的可用區,建立新的節點集區。這項設定可確保未執行 AI/機器學習模型的工作負載會留在標準可用區,除非您明確設定其他可用區。如需使用 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 不會直接暴露在網際網路上,但仍可存取面向網際網路的資源。

VPC 原生叢集和使用路由的叢集

在 GKE 中,叢集可根據將流量從一個 Pod 轉送至另一個 Pod 的方式來區分叢集。使用別名 IP 位址的叢集稱為「虛擬私有雲原生叢集」。使用 Google Cloud 路由的叢集稱為「使用路由的叢集」

根據預設,所有新的 GKE 叢集都會使用虛擬私有雲原生路由,這是我們建議的選項。您可以在建立叢集時變更這項設定,只以標準模式建立使用路由的叢集。叢集建立後即無法更新這項設定。

如要進一步瞭解 VPC 原生叢集及其福利 (包括任何特殊需求),請參閱「VPC 原生叢集」。

最佳做法

為叢集使用虛擬私有雲原生網路模式。這是 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 天內失效。

Autopilot 叢集無法使用 Alpha 版功能。

如要建立 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 和一般用途機型。

如要進一步瞭解節點集區設定,請參閱「關於節點集區」和「新增及管理節點集區」。

設定參考資料

如要查看可能的設定選項完整清單,請參閱下列參考指南:

後續步驟