本主題說明 Tanzu Kubernetes Grid (TKG) 建立的各種不同類型的工作負載叢集,以及如何設定和建立這些叢集。
Tanzu Kubernetes Grid 託管了三種不同類型的工作負載叢集:
Cluster
的 Kubernetes 物件spec.topology
區塊中定義了基本拓撲
spec.topology.class
值繼承組態
ClusterClass
物件class
為 tanzukubernetescluster
class
為 tkg-INFRASTRUCTURE-default-VERSION
,例如 tkg-vsphere-default-v1.0.0
。TanzuKubernetesCluster
的 Kubernetes 物件Cluster
的 Kubernetes 物件請注意,具有 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 提供者:
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 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 版本清單,請參見產品互通性對照表。
以類別為基礎的叢集具有以下的物件類型高層級階層。KubeAdmControlPlane
和 MachineDeployment
的基礎物件具有相同的類型,但通常是不同的物件:
Cluster
- 由規格中的 topology
區塊所設定的控制平面和工作節點的數量和類型
KubeAdmControlPlane
- 定義控制平面節點
vSphereMachine
、AWSMachine
、DockerMachine
Machine
- 節點虛擬機器的一般物件KubeAdmConfig
- Kubernetes 組態,包括 Kubernetes 版本、映像存放庫、部署前和部署後 hook 等。MachineDeployment
- 定義工作節點
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.yaml、tkc.yaml | 以宣告方式建立工作負載叢集 |
*本機目錄位於 .config/tanzu/tkg/providers/
下
Tanzu CLI 建立以 TKC 為基礎的工作負載叢集時,會合併以下各項中的組態值:
~/.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
清單中的自訂檔案若要透過 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 提供者模組的版本。PLAN
是 dev
、prod
或自訂計劃。每個計劃組態檔都有一個 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
目錄中
ytt
來查看叢集和叢集計劃,以在同一個 ytt
目錄中設定 overlay.yaml
檔案中的值。~/.config/tanzu/tkg/providers/config_default.yaml
- 僅附加
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: |