工作負載叢集

本主題說明 Tanzu Kubernetes Grid (TKG) 建立的各種不同類型的工作負載叢集,以及如何設定和建立這些叢集。

工作負載叢集類型:以類別為基礎、以 TKC 為基礎和以計劃為基礎

Tanzu Kubernetes Grid 託管了三種不同類型的工作負載叢集:

  • 以類別為基礎的叢集
    • 類型為 Cluster 的 Kubernetes 物件
    • vSphere with Tanzu 8 和 TKG 2.x 中引入的一種新型叢集
    • spec.topology 區塊中定義了基本拓撲
      • 例如,工作節點和控制平面節點的數量和類型
    • spec.topology.class 值繼承組態
      • ClusterClass 物件
      • 在主管上,預設 classtanzukubernetescluster
      • 在獨立管理叢集上,預設 classtkg-INFRASTRUCTURE-default-VERSION,例如 tkg-vsphere-default-v1.0.0
    • 可以在 vSphere with Tanzu 8 中使用主管建立,也可以在沒有主管的 vSphere 6.7、7 和 8 上,AWS 上或 Azure 上使用獨立 TKG v2.x 管理叢集建立
  • 以 TKC 為基礎的叢集 (舊版)
    • 類型為 TanzuKubernetesCluster 的 Kubernetes 物件
    • 可以在 vSphere 7 上使用主管叢集或 vSphere 8 上的主管叢集建立,以用於舊版
  • 以計劃為基礎的叢集 (舊版)
    • 類型為 Cluster 的 Kubernetes 物件
    • 可以在沒有主管的 vSphere 6.7、7 和 8 上、AWS 或 Azure 上使用獨立 TKG v2.x 或 v1.x 管理叢集上建立

請注意,具有 class: tanzukubernetescluster (全為小寫) 的以類別為基礎的叢集不同於以 TKC 為基礎的叢集 (這些叢集的物件類型為 TanzuKubernetesCluster)。

以類別為基礎的叢集設計為取代其他兩種叢集類型,其作法是提供相同的 API 給兩種類型的管理叢集:主管叢集和獨立管理叢集。

重要

Tanzu Kubernetes Grid v2.4.x 是支援在 AWS 和 Azure 上建立 TKG 工作負載叢集的最後一個 TKG 版本。Tanzu Kubernetes Grid v2.5 中將移除在 AWS 和 Azure 上建立 TKG 工作負載叢集的功能。有關詳細資訊,請參見《VMware Tanzu Kubernetes Grid v2.4 發行說明》中的〈棄用 AWS 和 Azure 上的 TKG 管理和工作負載叢集〉

叢集類型和叢集 API

為了建立及管理工作負載叢集,管理叢集會執行叢集 API 軟體:

  • 叢集 API - 用於建立及管理 Kubernetes 叢集的開放原始碼 Kubernetes 軟體。
  • 叢集 API 提供者軟體 - 在特定雲端或實體基礎結構上執行,以作為支援叢集 API 的介面。
    • 大多數叢集 API 提供者軟體專案都是開放原始碼,但有些則是專屬的。

下表將管理叢集類型和工作負載叢集類型對應到其使用的叢集 API 提供者:

TKG 和... 使用叢集 API 提供者... 在... 建立及管理的工作負載叢集類型... 在產品版本中...
主管 CAPW (專屬) vSphere 以類別為基礎的 Cluster 物件 TKG 2.x 和 vSphere with Tanzu 8
TanzuKubernetesCluster 物件 vSphere with Tanzu 7 和 8
獨立管理叢集 CAPA (OSS) AWS 以類別為基礎的 Cluster 物件 TKG v2.x
以計劃為基礎的 AWSCluster 物件 TKG v2.x 和 v1.x
CAPZ (OSS) Azure 以類別為基礎的 Cluster 物件 TKG v2.x
以計劃為基礎的 AzureCluster 物件 TKG v2.x 和 v1.x
CAPV (OSS) vSphere 以類別為基礎的 Cluster 物件 TKG v2.x
以計劃為基礎的 VSphereCluster 物件 TKG v2.x 和 v1.x

叢集類型和 Tanzu CLI 相容性

使用隨附不同版本 Tanzu Kubernetes Grid 的不同版本 Tanzu CLI,可以建立不同類型的叢集,視您在 AWS 或 Azure 上使用的是 vSphere 8 上的主管、vSphere 8 上的主管叢集、vSphere 7 上的主管叢集,或沒有主管的 vSphere 6.7、7 和 8 上的獨立管理叢集。

CLI 版本 TKG 版本 使用 ... 建立以類別為基礎的叢集 使用 ... 建立以計劃為基礎的叢集 使用 ... 建立 TanzuKubernetesClusters
獨立管理叢集 vSphere 8 上的主管 vSphere 7 上的主管叢集 獨立管理叢集 vSphere 8 上的主管 vSphere 7 上的主管叢集 獨立管理叢集 vSphere 8 上的主管 vSphere 7 上的主管叢集
v0.90.1* 2.3.0 x x x x
v0.29.0 2.2.0 x x x x
v0.28.1 2.1.1 x x x x
v0.25.4 1.6.1 x x x x
v0.25.0 1.6.0 x x x x
v0.11.x 1.5.x x x x x x x x

*有關與 Tanzu Kubernetes Grid v2.4 相容的 CLI 版本清單,請參見產品互通性對照表

工作負載叢集物件子元件

以類別為基礎的叢集具有以下的物件類型高層級階層。KubeAdmControlPlaneMachineDeployment 的基礎物件具有相同的類型,但通常是不同的物件:

  • Cluster - 由規格中的 topology 區塊所設定的控制平面和工作節點的數量和類型
    • KubeAdmControlPlane - 定義控制平面節點
      • IaaS 特定的機器物件 - 例如 vSphereMachineAWSMachineDockerMachine
      • Machine - 節點虛擬機器的一般物件
      • KubeAdmConfig - Kubernetes 組態,包括 Kubernetes 版本、映像存放庫、部署前和部署後 hook 等。
    • MachineDeployment - 定義工作節點
      • IaaS 特定的機器物件
      • Machine
      • KubeAdmConfig

如需詳細資訊,請參閱《叢集 API 手冊》中的 CustomResourceDefinitions 關係

建立工作負載叢集的方法

視安裝的環境而定,您可以透過多種方式建立 Tanzu Kubernetes Grid 工作負載叢集:使用 Tanzu CLI、Tanzu Mission Control 和 kubectl

下圖概述使用者如何在不同的基礎結構上建立不同類型的工作負載叢集:

使用… 建立… 組態值取自... 組態範本取自... 指示
Tanzu CLI:
tanzu cluster create
以類別為基礎的工作負載叢集 (vSphere) Cluster 和基礎物件規格 使用者,例如 classycluster.yaml 建立以類別為基礎的叢集
TanzuKubernetesCluster 工作負載叢集 (vSphere) 叢集組態檔、
本機環境、
(進階) ytt 覆疊
infrastructure-tkg-service-vsphere* (舊版) 建立以計劃為基礎的叢集或 TKC 叢集
以計劃為基礎的工作負載叢集 (vSphere、AWS、Azure) infrastructure-vsphere
infrastructure-aws
infrastructure-azure*
Tanzu Mission Control (TMC) TanzuKubernetesCluster 或以計劃為基礎的工作負載叢集 TMC UI 已登錄的管理叢集 佈建工作負載叢集
kubectl apply 以類別為基礎或 TanzuKubernetesCluster 工作負載叢集 (vSphere) Cluster 和基礎物件規格 使用者,例如 classycluster.yamltkc.yaml 以宣告方式建立工作負載叢集

*本機目錄位於 .config/tanzu/tkg/providers/

關於舊版 TKC 和以計劃為基礎的叢集組態

Tanzu CLI 建立以 TKC 為基礎的工作負載叢集時,會合併以下各項中的組態值:

  • 叫用時即時輸入
    • CLI 輸入
  • 環境變數
  • ~/.config/tanzu/tkg/cluster-config.yaml 或其他傳遞到 CLI --file 選項的檔案
  • ~/.config/tanzu/tkg/providers/infrastructure-tkg-service-vsphere 中的叢集計劃 YAML 組態檔,如下方的計劃組態檔中所述。
  • ~/.config/tanzu/tkg/providers 下方的其他非計劃 YAML 組態檔

即時輸入會套用每次叫用特有的組態值,環境變數會將其保留在終端工作階段上,且組態檔和覆疊將永久保留這些值。您可以透過上述任何來源來自訂叢集,並提供如下所述的建議和注意須知。

如需 tanzu CLI 如何從這些可能發生衝突的多個來源來衍生特定叢集組態值的相關資訊,請參閱組態值優先順序

計劃組態檔

~/.config/tanzu/tkg/providers/infrastructure-tkg-service-vsphere 目錄包含名為 cluster-template-definition-PLAN.yaml 的 TKC 工作負載叢集計劃組態檔。每個計劃的組態值來自這些檔案,以及來自它們列在 spec.paths 之下的檔案:

  • tanzu CLI 隨附的組態檔
  • 使用者建立並新增到 spec.paths 清單中的自訂檔案
  • 使用者建立或編輯以覆寫其他組態檔中之值的 ytt 覆疊

要編輯的檔案、要單獨保留的檔案

若要透過 YAML 來自訂叢集計劃,請編輯 ~/.config/tanzu/tkg/providers/infrastructure-tkg-service-vsphere 之下的檔案,但應避免變更其他檔案。

要編輯的檔案

工作負載叢集計劃組態檔路徑遵循 ~/.config/tanzu/tkg/providers/infrastructure-infrastructure-tkg-service-vsphere/VERSION/cluster-template-definition-PLAN.yaml 形式,其中:

  • VERSION 是組態所用叢集 API 提供者模組的版本。
  • PLANdevprod 或自訂計劃。

每個計劃組態檔都有一個 spec.paths 區段,其中列出來源檔案和用來設定叢集計劃的 ytt 目錄。例如:

apiVersion: providers.tanzu.vmware.com/v1alpha1
kind: TemplateDefinition
spec:
  paths:
    - path: providers/infrastructure-tkg-service-vsphere/v1.1.0/ytt
    - path: providers/ytt
    - path: bom
      filemark: text-plain
    - path: providers/config_default.yaml

這些檔案將依列出的順序來處理。如果在多個檔案中設定了相同的組態欄位,則最後處理的設定會是 tanzu CLI 使用的設定。

若要自訂叢集組態,您可以:

  • 建立新的組態檔,並將它們新增到 spec.paths 清單。
    • 這是更簡單的方法。
  • 修改現有的 ytt 覆疊檔案。
    • 對於熟悉 ytt 的人員,這是更強大的方法。

要單獨保留的檔案

VMware 不建議變更 ~/.config/tanzu/tkg/providers 之下的下列檔案,除非另有指示:

  • base-template.yaml 檔案,位於 ytt 目錄中

    • 這些組態檔使用的值來自 Kubernetes SIG 和其他上游開放原始碼專案之下的叢集 API 提供者存放庫,它們最好保持不變。
    • 請改以建立新的組態檔,或在進階 TKC 組態中使用 ytt 來查看叢集和叢集計劃,以在同一個 ytt 目錄中設定 overlay.yaml 檔案中的值。
  • ~/.config/tanzu/tkg/providers/config_default.yaml - 僅附加

    • 此檔案包含系統範圍的 Tanzu Kubernetes Grid 預設值。
    • 請勿修改此檔案中的現有值,但可以在尾端附加 User Customizations 區段。
    • 請不要變更此檔案中的值,而改以在傳遞給 tanzu cluster create--file 選項的檔案中自訂叢集組態。
  • ~/.config/tanzu/tkg/providers/config.yaml

    • tanzu CLI 會以此檔案作為 /providers 目錄及其預設版本中的所有提供者的參考。

組態值優先順序

Tanzu CLI 建立以 TKC 為基礎的工作負載叢集時,會合併多個來源中的組態值。如果這些來源發生衝突,則會依以下遞減優先順序來解決衝突:

處理層 (依遞減優先順序來排序) 來源 範例
1.在本機環境中設定的叢集組態變數 在 Shell 中設定。 export WORKER_VM_CLASS=best-effort-large
2.使用 tanzu config set env. 在 Tanzu CLI 中設定的叢集組態變數。 在 shell 中設定;儲存在全域 Tanzu CLI 組態檔 ~/.config/tanzu/config.yaml 中。 tanzu config set env.WORKER_VM_CLASS best-effort-large
3.在叢集組態檔中設定的叢集組態變數 設定在傳遞至 tanzu cluster create--file 選項的檔案中。檔案預設為 ~/.config/tanzu/tkg/cluster-config.yaml WORKER_VM_CLASS: best-effort-large
4.原廠預設組態值 設定於 providers/config_default.yaml 中,但列出的某些欄位沒有預設值。請勿修改此檔案。 WORKER_VM_CLASS:
check-circle-line exclamation-circle-line close-line
Scroll to top icon