建立標準叢集來執行容器工作負載

本文說明如何在 Google Distributed Cloud (GDC) 實體隔離區域中,建立標準 Kubernetes 叢集。標準叢集提供專案範圍、高度可設定的 Kubernetes 叢集,其中包含一組最少的代管服務。標準叢集在服務設定方面比共用叢集更具彈性,但管理負擔也較高。如要進一步瞭解標準叢集,請參閱「Kubernetes 叢集設定」。

標準叢集是可用區資源,無法跨越多個可用區。如要在多可用區宇宙中操作叢集,必須在各可用區手動建立叢集。

本文適用於應用程式開發人員等對象,例如應用程式營運商群組,負責管理組織內的容器工作負載。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

如要建立標準叢集,請要求必要權限並準備環境。

要求 IAM 角色

請與 IAM 機構組織管理員聯絡,要求對方授予下列角色:

  • IAM 專案管理員 (project-iam-admin):將必要角色授予其他使用者,以便管理標準叢集內的存取權。
  • 標準叢集管理員 (standard-cluster-admin):在專案中建立標準叢集。

這些角色會繫結至專案命名空間。

準備環境

  • 確認您已完成適當設定,可存取及管理標準叢集。詳情請參閱「管理標準叢集的存取權」。
  • 產生可用於託管叢集的可用區 API 伺服器 kubeconfig 檔案。將環境變數 MANAGEMENT_API_SERVER 設為 kubeconfig 路徑。詳情請參閱「可用區管理 API 伺服器資源」。
  • 請查看叢集限制,瞭解資源考量事項。

規劃 Pod CIDR 區塊

如要為工作負載分配適當大小的 Pod CIDR 區塊,您必須先計算 Kubernetes 叢集所需的 IP 位址數量,再建立叢集。叢集建立後,大部分網路參數即無法變更。

Kubernetes 叢集在分配 IP 位址時,會遵循下列邏輯:

  • Kubernetes 會將由 256 個位址組成的 /24 CIDR 區塊指派給每個節點。這個數量符合 Kubernetes 叢集每個節點預設最多 110 個 Pod 的限制。
  • 指派給節點的 CIDR 區塊大小,取決於每個節點的 Pod 數量上限值。
  • 區塊包含的位址數量,一律至少是每個節點 Pod 數量上限的兩倍。

請參閱以下範例,瞭解如何計算「Per node mask size= /24」(每個節點的遮罩大小 = /24) 的預設值,以容納 110 個 Pod:

Maximum pods per node = 110
Total number of IP addresses required = 2 * 110 = 220

Per node mask size = /24
Number of IP addresses in a /24 = 2(32 - 24) = 256

根據所需的節點數量,決定要為 Kubernetes 叢集設定的 Pod CIDR 遮罩。設定 CIDR 範圍時,請預留叢集日後新增節點的空間:

  Total number of nodes supported = 2(Per node mask size - pod CIDR mask)

預設的每個節點遮罩大小為 /24,請參閱下表,瞭解 Pod CIDR 遮罩與支援節點數量的對應關係。

Pod CIDR 遮罩 計算方式: 2(每個節點的遮罩大小 - CIDR 遮罩) 支援的節點數量上限 (包括控制層節點)
/21 2(24 - 21) 8
/20 2(24-20) 16
/19 2(24 - 19) 32
/18 2(24 - 18) 64

計算 Kubernetes 叢集的 Pod CIDR 區塊後,請在下一節的叢集建立工作流程中設定該區塊。

建立標準叢集

如要建立標準叢集,請完成下列步驟:

控制台

  1. 在專案挑選器中選取專案。

    標準叢集是專案範圍的資源。如果改選組織,則會建立組織範圍的共用叢集。詳情請參閱資源階層。

  2. 在導覽選單中,依序選取 「Kubernetes Engine」 > 「叢集」。

  3. 點選「建立叢集」。

  4. 在「Name」(名稱) 欄位中,指定叢集名稱。

  5. 選取要建立叢集的可用區。

  6. 選取叢集的 Kubernetes 版本。

  7. 點選「下一步」。

  8. 設定叢集的網路設定。叢集建立後,您就無法變更這些網路設定。Kubernetes 叢集預設且唯一支援的網際網路通訊協定是網際網路通訊協定第 4 版 (IPv4)。

    1. 如要建立專屬負載平衡器節點,請輸入要建立的節點數量。根據預設,您會收到零個節點,且負載平衡器流量會透過控制層節點執行。

    2. 選取要使用的「Service CIDR」 (無類別跨網域路由)。系統會從這個範圍內,為您部署的服務 (例如負載平衡器) 分配 IP 位址。

    3. 選取要使用的 Pod CIDR。叢集會從這個範圍分配 IP 位址給 Pod 和 VM。

    4. 點選「下一步」。

  9. 查看叢集自動生成的預設節點集區詳細資料。按一下「 Edit」(編輯),修改預設節點集區。

  10. 如要建立其他節點集區,請選取「新增節點集區」。編輯預設節點集區或新增節點集區時,您可以使用下列選項進行自訂:

    1. 為節點集區命名。節點集區建立後即無法修改名稱。
    2. 指定要在節點集區中建立的 worker 節點數量。
    3. 請依據工作負載需求,選取最合適的機器類別。查看下列設定清單:

      • 機型
      • CPU
      • 記憶體
    4. 按一下 [儲存]。

  11. 點選「建立」來建立叢集。

標準叢集建立作業最多可能需要 60 分鐘才能完成。

API

  1. 建立 Cluster 自訂資源,並儲存為 YAML 檔案,例如 cluster.yaml:

    apiVersion: cluster.gdc.goog/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: PROJECT_NAME
    spec:
      clusterNetwork:
        podCIDRSize: POD_CIDR
        serviceCIDRSize: SERVICE_CIDR
      initialVersion:
        kubernetesVersion: KUBERNETES_VERSION
      nodePools:
      - machineTypeName: MACHINE_TYPE
        name: NODE_POOL_NAME
        nodeCount: NUMBER_OF_WORKER_NODES
        taints: TAINTS
        labels: LABELS
        acceleratorOptions:
          gpuPartitionScheme: GPU_PARTITION_SCHEME
      releaseChannel:
        channel: UNSPECIFIED
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。叢集名稱結尾不得為 -system。-system 後置字串是保留給 GDC 建立的叢集。
    • PROJECT_NAME:要在其中建立叢集的專案名稱。
    • POD_CIDR:分配 Pod 虛擬 IP 位址的網路範圍大小。如未設定,系統會使用預設值 21。
    • SERVICE_CIDR:分配服務虛擬 IP 位址的網路範圍大小。如未設定,系統會使用預設值 23。
    • KUBERNETES_VERSION:叢集的 Kubernetes 版本,例如 1.26.5-gke.2100。如要列出可設定的 Kubernetes 版本,請參閱「列出叢集可用的 Kubernetes 版本」。
    • MACHINE_TYPE:節點集區 worker 節點的機型。請參閱可用的機型,瞭解可設定的項目。
    • NODE_POOL_NAME:節點集區的名稱。
    • NUMBER_OF_WORKER_NODES:要在節點集區中佈建的 worker 節點數量。
    • TAINTS:要套用至這個節點集區節點的 taint。這是選填欄位。
    • LABELS:要套用至這個節點集區節點的標籤。其中包含鍵/值組合清單。這是選填欄位。
    • GPU_PARTITION_SCHEME:GPU 分割配置 (如果您執行 GPU 工作負載)。此為選填欄位。 例如,mixed-2。如未設定這個欄位,就不會對 GPU 進行分區。如要進一步瞭解可用的多實體 GPU (MIG) 設定檔,請參閱「支援的 MIG 設定檔」。
  2. 將自訂資源套用至 GDC 執行個體:

    kubectl apply -f cluster.yaml --kubeconfig MANAGEMENT_API_SERVER
    

    將 MANAGEMENT_API_SERVER 替換為可用區 API 伺服器的 kubeconfig 路徑。如果您尚未為目標可用區中的 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。

標準叢集建立作業最多可能需要 60 分鐘才能完成。

Terraform

  1. 在 Terraform 設定檔中,插入下列程式碼片段:

    provider "kubernetes" {
      config_path = "MANAGEMENT_API_SERVER"
    }
    
    resource "kubernetes_manifest" "cluster-create" {
      manifest = {
        "apiVersion" = "cluster.gdc.goog/v1"
        "kind" = "Cluster"
        "metadata" = {
          "name" = "CLUSTER_NAME"
          "namespace" = "PROJECT_NAME"
        }
        "spec" = {
          "clusterNetwork" = {
            "podCIDRSize" = "POD_CIDR"
            "serviceCIDRSize" = "SERVICE_CIDR"
          }
          "initialVersion" = {
            "kubernetesVersion" = "KUBERNETES_VERSION"
          }
          "nodePools" = [{
            "machineTypeName" = "MACHINE_TYPE"
            "name" = "NODE_POOL_NAME"
            "nodeCount" = "NUMBER_OF_WORKER_NODES"
            "taints" = "TAINTS"
            "labels" = "LABELS"
            "acceleratorOptions" = {
              "gpuPartitionScheme" = "GPU_PARTITION_SCHEME"
            }
          }]
          "releaseChannel" = {
            "channel" = "UNSPECIFIED"
          }
        }
      }
    }
    

    更改下列內容:

    • MANAGEMENT_API_SERVER:可用區 API 伺服器的 kubeconfig 路徑。如果您尚未為目標可用區中的 API 伺服器產生 kubeconfig 檔案,請參閱「登入」一節。
    • CLUSTER_NAME:叢集名稱。叢集名稱結尾不得為 -system。-system 後置字串是保留給 GDC 建立的叢集。
    • PROJECT_NAME:要在其中建立叢集的專案名稱。
    • POD_CIDR:分配 Pod 虛擬 IP 位址的網路範圍大小。如未設定,系統會使用預設值 21。
    • SERVICE_CIDR:分配服務虛擬 IP 位址的網路範圍大小。如未設定,系統會使用預設值 23。
    • KUBERNETES_VERSION:叢集的 Kubernetes 版本,例如 1.26.5-gke.2100。如要列出可設定的 Kubernetes 版本,請參閱「列出叢集可用的 Kubernetes 版本」。
    • MACHINE_TYPE:節點集區 worker 節點的機型。請參閱可用的機型,瞭解可設定的項目。
    • NODE_POOL_NAME:節點集區的名稱。
    • NUMBER_OF_WORKER_NODES:要在節點集區中佈建的 worker 節點數量。
    • TAINTS:要套用至這個節點集區節點的 taint。這是選填欄位。
    • LABELS:要套用至這個節點集區節點的標籤。其中包含鍵/值組合清單。這是選填欄位。
    • GPU_PARTITION_SCHEME:GPU 分割配置 (如果您執行 GPU 工作負載)。此為選填欄位。 例如,mixed-2。如未設定這個欄位,就不會對 GPU 進行分區。如要進一步瞭解可用的多實體 GPU (MIG) 設定檔,請參閱「支援的 MIG 設定檔」。
  2. 使用 Terraform 套用新的標準叢集:

    terraform apply
    

標準叢集建立作業最多可能需要 60 分鐘才能完成。

後續步驟