本主題說明如何使用 Tanzu CLI 來建立工作負載叢集。
以下程序說明如何從叢集組態檔來部署工作負載叢集。從叢集組態檔中,您可以建立以下類型的叢集:
以類別為基礎的叢集:如果要將工作負載叢集部署到以下目標,請遵循以下的建立以類別為基礎的叢集中的步驟:
如果要將以類別為基礎的工作負載部署到具有主管的 vSphere 8,您必須從物件規格來部署它,如設定主管部署的以類別為基礎的叢集中所述。如需叢集組態檔和物件規格的詳細資訊,請參閱組態檔。
(舊版) 以計劃為基礎的叢集和 TKC 叢集:遵循以下的 (舊版) 建立以計劃為基礎的叢集或 TKC 叢集中的步驟。
如需這些叢集類型的詳細資訊,請參閱〈關於 Tanzu Kubernetes Grid〉中的工作負載叢集類型。
以下程序說明如何從叢集組態檔,來部署以類別為基礎的工作負載叢集。產生的叢集在 Kubernetes 中會以 Cluster
物件表示。
重要VMware 建議您針對您所部署的每一個叢集,使用及保留一個專用組態檔。
找出您依照上面必要條件所準備的組態檔。
建立叢集。您可以透過一個步驟或兩個步驟建立叢集,具體取決於在建立物件之前,您是要檢查還是要編輯其物件規格:
tanzu cluster create
的 –file
選項,命令會自動套用該檔案。tanzu cluster create
的 –file
選項,然後命令會將檔案轉換為 Cluster
物件規格,並在不建立叢集的情況下退出。檢查或編輯規格後,您可以透過重新執行 tanzu cluster create
來建立叢集。附註在 Tanzu Kubernetes Grid v2.1 中,如果要以兩個步驟建立叢集,
tanzu cluster create
可能會失敗,並顯示類似以下內容的錯誤:Error: workload cluster configuration validation failed...
,請參閱《VMware Tanzu Kubernetes Grid v2.1 版本說明》中的執行tanzu cluster create
時出現驗證錯誤。
將 auto-apply-generated-clusterclass-based-configuration
設定為 true
(如果尚未設定)。這會將 Tanzu CLI 設定為始終使用一個步驟程序來建立以類別為基礎的叢集。如需有關 auto-apply-generated-clusterclass-based-configuration
的詳細資訊,請參閱《Tanzu CLI 架構和組態》中的功能。
tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration true
執行 tanzu cluster create
,在 --file
選項中指定叢集組態檔的路徑。例如,如果您將組態檔 my-workload-cluster.yaml
儲存在預設的 clusterconfigs
資料夾中,請執行以下命令,以使用您在組態檔中指定的名稱來建立叢集:
tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
如果您未在叢集組態檔中指定名稱,或者您想使用不同於指定名稱的名稱來建立叢集,請在 tanzu cluster create
命令中指定叢集名稱。例如,若要從組態檔 my-workload-cluster.yaml
建立一個名為 another-workload-cluster
的叢集,請執行以下命令:
tanzu cluster create another-workload-cluster --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
將 auto-apply-generated-clusterclass-based-configuration
功能設定為 false
(如果尚未設定)。這會將 Tanzu CLI 設定為始終使用兩個步驟程序來建立以類別為基礎的叢集。false
是預設設定。如果您已變更預設設定,若要重設為 false
,請執行:
tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
如需有關 auto-apply-generated-clusterclass-based-configuration
的詳細資訊,請參閱《Tanzu CLI 架構和組態》中的功能。
若要產生物件規格,請執行 tanzu cluster create
,並在 --file
選項中指定叢集組態檔的路徑。此命令會將產生的物件規格儲存至 ~/.config/tanzu/tkg/clusterconfigs
資料夾、列印其位置,然後退出。
例如,如果您將叢集組態檔 my-workload-cluster.yaml
儲存在預設 clusterconfigs
資料夾中,請執行以下命令以產生物件規格:
tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
如果您未在組態檔中指定叢集的名稱,或者您想使用不同於指定名稱的名稱來建立叢集,請在 tanzu cluster create
命令中指定叢集名稱。例如:
tanzu cluster create another-workload-cluster --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
檢查或編輯 tanzu cluster create
產生的物件規格檔案。
重新執行 tanzu cluster create
,在 --file
選項中指定物件規格的路徑。例如:
tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster-spec.yaml
如果要建立執行與管理叢集不同的 Kubernetes 版本的叢集,請包括第一步中使用的所有相同旗標,包括 --tkr
旗標。例如:
tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster-spec.yaml -v 6 --tkr v1.23.16---vmware.1-tkg.2
若要產生物件規格,請使用 --dry-run
選項執行 tanzu cluster create
。--dry-run
選項會覆寫 auto-apply-generated-clusterclass-based-configuration
設定。
tanzu cluster create CLUSTER-NAME --dry-run --file PATH-TO-CLUSTER-CONFIG-FILE.yaml > PATH-TO-OBJECT-SPEC-FILE.yaml
其中:
CLUSTER-NAME
是叢集的名稱。如果您在叢集組態檔中指定了 CLUSTER-NAME
,則可以省略它。PATH-TO-CLUSTER-CONFIG-FILE
是您在步驟 1 中找到的叢集組態檔的路徑。PATH-TO-OBJECT-SPEC-FILE
是您要儲存所產生的物件規格檔案的位置。例如,若要將所產生的物件規格儲存至名為 my-workload-cluster-spec.yaml
的檔案中,請執行以下命令:
tanzu cluster create my-cluster --dry-run --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml > my-workload-cluster-spec.yaml
檢查或編輯在上個步驟中的 --dry-run
選項產生的物件規格檔案。在以上的範例中,規格檔案的名稱為 my-workload-cluster-spec.yaml
。
檢查或編輯物件規格檔案後,在沒有 --dry-run
選項的情況下重新執行 tanzu cluster create
。在 --file
選項中,指定物件規格檔案的路徑。例如:
tanzu cluster create my-cluster --file my-workload-cluster-spec.yaml
如果要建立執行與管理叢集不同的 Kubernetes 版本的叢集,請包括第一步中使用的所有相同旗標,包括 --tkr
旗標。例如:
tanzu cluster create --file my-workload-cluster-spec.yaml -v 6 --tkr v1.23.16---vmware.1-tkg.2
附註建立以類別為基礎的叢集時,Tanzu CLI 不會採用使用 ytt 的舊版叢集組態中所述的
ytt
自訂。如果 CLI 在您的機器上偵測到它們,則會輸出錯誤It seems like you have done some customizations to the template overlays.
建立叢集後,請執行 tanzu cluster get
命令,以查看叢集的相關資訊:
tanzu cluster get CLUSTER-NAME
輸出會列出下列相關資訊:控制平面和工作節點的狀態、叢集正在執行的 Kubernetes 版本,以及節點的名稱。
以下程序說明如何從組態檔,來部署以計劃為基礎的叢集或 TKC 叢集:
AWSCluster
、AzureCluster
或 VSphereCluster
物件表示,具體取決於您的目標基礎結構平台。TanzuKubernetesCluster
物件表示。若要建立叢集,請執行以下動作:
在 Tanzu CLI 中,將 allow-legacy-cluster
功能設定為 true
:
tanzu config set features.cluster.allow-legacy-cluster true
建立叢集:
執行 tanzu cluster create
命令,並在 --file
選項中指定組態檔的路徑。例如,如果您將工作負載組態檔 my-workload-cluster.yaml
儲存在預設 clusterconfigs
資料夾中,請執行以下命令,以使用您在組態檔中指定的名稱來建立叢集:
tanzu cluster create --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
如果您未在組態檔中指定名稱,或者您想使用不同於指定名稱的名稱來建立叢集,請在 tanzu cluster create
命令中指定叢集名稱。例如,若要從組態檔 my-workload-cluster.yaml
建立一個名為 another-workload-cluster
的叢集,請執行以下命令:
tanzu cluster create another-workload-cluster --file ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
建立叢集後,請執行 tanzu cluster get
命令,以查看叢集的相關資訊:
tanzu cluster get CLUSTER-NAME
輸出會列出下列相關資訊:控制平面和工作節點的狀態、叢集正在執行的 Kubernetes 版本,以及節點的名稱。
依照設定主管部署的 TKC 叢集 (舊版) 中所述,為工作負載叢集建立或複製組態檔。
將 Tanzu CLI 連線到主管後,取得目標 vSphere 命名空間:
tanzu namespaces get
確定叢集的版本化 Tanzu Kubernetes 版本 (TKr):
取得主管叢集中的可用 TKr 清單:
tanzu kubernetes-release get
從命令輸出中,記錄 NAME
之下所列出的值,例如 v1.22.5---vmware.1-tkg.1
。tkr
的 NAME
值與 VERSION
值相同,差別在 +
改成 ---
。
執行具有 TKR-NAME
值和組態檔名稱的 tanzu cluster create
,來部署叢集:
tanzu cluster create CLUSTER-NAME --file CONFIGURATION-FILE --tkr=TKR-NAME
其中:
CLUSTER-NAME
是您提供給叢集的任何名稱。此命令列值會覆寫組態檔中的任何 CLUSTER_NAME
設定。CONFIGURATION-FILE
是叢集組態檔的本機路徑,例如 ~/.config/tanzu/tkg/clusterconfigs/my-workload-cluster.yaml
。TKR-NAME
是上面取得的 TKr 名稱。建立叢集後,執行 tanzu cluster get
,以查看叢集的目前狀態:
tanzu cluster get CLUSTER-NAME
將其控制平面節點和端點的 IP 位址設為靜態位址,如設定節點 DHCP 預留和端點 DNS 記錄 (僅限 vSphere) 中所述。
以下程序說明如何使用 Kubernetes 樣式的物件規格,來建立以類別為基礎的工作負載叢集:
附註在 Tanzu Kubernetes Grid v2.1 中,當您從物件規格建立叢集時,
tanzu cluster create
可能會失敗,並顯示類似以下內容的錯誤:Error: workload cluster configuration validation failed...
,請參閱《VMware Tanzu Kubernetes Grid v2.1 版本說明》中的執行tanzu cluster create
時出現驗證錯誤。
若要為以類別為基礎的工作負載叢集建立 Kubernetes 樣式的物件規格檔案,請執行以下步驟。
如果您已更新 auto-apply-generated-clusterclass-based-configuration
功能的預設組態,請將它設回為 false
然後使用 --file
旗標執行 tanzu cluster create
。若要將 auto-apply-generated-clusterclass-based-configuration
設定為 false
,請執行:
tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
在此功能設定為 false
,而且您執行具有 --file
旗標的 tanzu cluster create
時,命令會將叢集組態檔轉換為物件規格檔案,並在不建立叢集的情況下退出。檢閱組態後,使用 Tanzu CLI 產生的物件規格檔案重新執行 tanzu cluster create
。
若要為單一叢集建立規格檔案,請將 --dry-run
選項傳遞至 tanzu cluster create
並將輸出儲存至檔案中。使用相同的選項和組態 --file
,亦即,您在建立叢集時將使用的選項和組態,例如:
tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
--dry-run
選項會覆寫 auto-apply-generated-clusterclass-based-configuration
設定。
有關範例物件規範檔,請參見範例 Cluster
物件及其從屬物件。
Cluster
物件規格,如
設定主管部署的以類別為基礎的叢集中所述。
Cluster
物件規格供您使用,例如 v1beta1 範例:預設叢集。topology
區塊中設定虛擬機器類型、規模和其他基本叢集組態。Cluster
物件本身無法設定的屬性,例如叢集基礎結構中的一次性容器介面設定,請參閱進行一次性基礎結構設定。若要從物件規格部署以類別為基礎的工作負載叢集,請將物件規格傳遞至 tanzu cluster create
的 --file
選項,例如:
tanzu cluster create my-cluster --file my-cluster-spec.yaml
附註建立以類別為基礎的叢集時,Tanzu CLI 不會採用使用 ytt 的舊版叢集組態中所述的
ytt
自訂。如果 CLI 在您的機器上偵測到它們,則會輸出錯誤It seems like you have done some customizations to the template overlays.
對於使用 tanzu management-cluster create
或 tanzu mc create
建立的管理叢集而不是 vSphere with Tanzu 主管叢集管理的工作負載叢集,部署 Harbor 或其他服務可使所有工作負載共用單一服務執行個體。
每個 Tanzu Kubernetes Grid 執行個體只能有一個共用服務叢集。
通過將 Harbor 部署到共用服務叢集,同一管理叢集管理的所有工作負載叢集可以共用單個 Harbor 執行個體。有關部署 Harbor 的說明,請參閱為服務登錄安裝 Harbor。
若要建立共用服務叢集,請執行以下操作:
為叢集建立叢集組態 YAML 檔。我們建議使用 prod
叢集計劃,而不是 dev
計劃。例如:
INFRASTRUCTURE_PROVIDER: vsphere
CLUSTER_NAME: YOUR-CLUSTER-NAME
CLUSTER_PLAN: prod
其中 YOUR-CLUSTER-NAME
是您為叢集選擇的名稱。例如,tkg-services
。
(僅限 vSphere) 如果您正在為叢集的控制平面 API 使用預設的 Kube-Vip 負載平衡器,則必須通過設定 VSPHERE_CONTROL_PLANE_ENDPOINT
指定其端點。請確定此 VIP 位址不在 DHCP 範圍內,但與 DHCP 範圍位於相同的子網路。如果您已將完整網域名稱 (FQDN) 對應至 VIP 位址,則可以指定 FQDN 而不是 VIP 位址。
如果要使用 NSX Advanced Load Balancer (ALB),請不要設定 VSPHERE_CONTROL_PLANE_ENDPOINT
,除非您需要控制平面端點為特定位址。如果是,請使用位於 NSX ALB IPAM 設定檔 VIP 網路範圍內且您已手動新增至靜態 IP 集區的靜態位址,或使用對應至靜態位址的 FQDN。
例如:
VSPHERE_CONTROL_PLANE_ENDPOINT: 10.10.10.10
按照上述從組態檔建立叢集中所述建立共用服務叢集。
將 kubectl
的內容設定為管理叢集的內容。例如:
kubectl config use-context mgmt-cluster-admin@mgmt-cluster
在此範例中,mgmt-cluster
是管理叢集的名稱。
將 tanzu-services
標籤作為其叢集角色新增至共用服務叢集。此標籤將共用服務叢集標識為管理叢集和工作負載叢集。例如:
kubectl label cluster.cluster.x-k8s.io/tkg-services cluster-role.tkg.tanzu.vmware.com/tanzu-services="" --overwrite=true
在此範例中,tkg-services
是共用服務叢集的名稱。您應該會看到確認 cluster.cluster.x-k8s.io/tkg-services labeled
。
透過執行以下命令檢查標籤是否已正確套用:
tanzu cluster list --include-management-cluster
您應該會看到共用服務叢集具有 tanzu-services
角色。例如:
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
another-cluster default running 1/1 1/1 v1.24.10+vmware.1 <none> dev v1.24.10---vmware.1-tkg
tkg-services default running 3/3 3/3 v1.24.10+vmware.1 tanzu-services prod v1.24.10---vmware.1-tkg
mgmt-cluster tkg-system running 1/1 1/1 v1.24.10+vmware.1 management dev v1.24.10---vmware.1-tkg
取得共用服務叢集 admin
認證。例如:
tanzu cluster kubeconfig get tkg-services --admin
將 kubectl
的內容設定為共用服務叢集。例如:
kubectl config use-context tkg-services-admin@tkg-services