建立工作負載叢集

本主題說明如何使用 Tanzu CLI 來建立工作負載叢集。

必要條件

(建議) 從組態檔來建立叢集

以下程序說明如何從叢集組態檔來部署工作負載叢集。從叢集組態檔中,您可以建立以下類型的叢集:

如需這些叢集類型的詳細資訊,請參閱〈關於 Tanzu Kubernetes Grid〉中的工作負載叢集類型

建立以類別為基礎的叢集

以下程序說明如何從叢集組態檔,來部署以類別為基礎的工作負載叢集。產生的叢集在 Kubernetes 中會以 Cluster 物件表示。

重要

VMware 建議您針對您所部署的每一個叢集,使用及保留一個專用組態檔。

  1. 找出您依照上面必要條件所準備的組態檔。

  2. 建立叢集。您可以透過一個步驟或兩個步驟建立叢集,具體取決於在建立物件之前,您是要檢查還是要編輯其物件規格:

    • (建議) 透過一個步驟建立叢集時,將叢集組態檔傳遞至 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 時出現驗證錯誤

    一個步驟程序 (建議)
    若要進行一個步驟程序,請執行以下動作:
    1. 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
      
    2. 執行 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
      
    兩個步驟程序,始終
    若要對您建立的每個叢集進行兩個步驟程序,請執行以下動作:
    1. 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 架構和組態》中的功能

    2. 若要產生物件規格,請執行 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
      
    3. 檢查或編輯 tanzu cluster create 產生的物件規格檔案。

    4. 重新執行 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
      
    兩個步驟程序,一次性
    若要對單一叢集進行兩個步驟程序,請執行以下動作:
    1. 若要產生物件規格,請使用 --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
      
    2. 檢查或編輯在上個步驟中的 --dry-run 選項產生的物件規格檔案。在以上的範例中,規格檔案的名稱為 my-workload-cluster-spec.yaml

    3. 檢查或編輯物件規格檔案後,在沒有 --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.

  3. 建立叢集後,請執行 tanzu cluster get 命令,以查看叢集的相關資訊:

    tanzu cluster get CLUSTER-NAME
    

    輸出會列出下列相關資訊:控制平面和工作節點的狀態、叢集正在執行的 Kubernetes 版本,以及節點的名稱。

(舊版) 建立以計劃為基礎的叢集或 TKC 叢集

以下程序說明如何從組態檔,來部署以計劃為基礎的叢集或 TKC 叢集:

  • 以計劃為基礎的叢集:產生的叢集在 Kubernetes 中會以 AWSClusterAzureClusterVSphereCluster 物件表示,具體取決於您的目標基礎結構平台。
  • TKC 叢集:產生的叢集在 Kubernetes 中會以 TanzuKubernetesCluster 物件表示。

若要建立叢集,請執行以下動作:

  1. 在 Tanzu CLI 中,將 allow-legacy-cluster 功能設定為 true

    tanzu config set features.cluster.allow-legacy-cluster true
    
  2. 建立叢集:

    以計劃為基礎的叢集
    如果要建立以計劃為基礎的叢集,請執行以下步驟:
    1. 找出您依照上面必要條件所準備的組態檔。
    2. 執行 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
      
    3. 建立叢集後,請執行 tanzu cluster get 命令,以查看叢集的相關資訊:

      tanzu cluster get CLUSTER-NAME
      

      輸出會列出下列相關資訊:控制平面和工作節點的狀態、叢集正在執行的 Kubernetes 版本,以及節點的名稱。

    TKC 叢集
    如果要建立 TKC 叢集,請執行以下步驟:
    1. 依照設定主管部署的 TKC 叢集 (舊版) 中所述,為工作負載叢集建立或複製組態檔。

    2. 將 Tanzu CLI 連線到主管後,取得目標 vSphere 命名空間:

      tanzu namespaces get
      
    3. 確定叢集的版本化 Tanzu Kubernetes 版本 (TKr):

      1. 取得主管叢集中的可用 TKr 清單:

        tanzu kubernetes-release get
        
      2. 從命令輸出中,記錄 NAME 之下所列出的值,例如 v1.22.5---vmware.1-tkg.1tkrNAME 值與 VERSION 值相同,差別在 + 改成 ---

    4. 執行具有 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 名稱。
    5. 建立叢集後,執行 tanzu cluster get,以查看叢集的目前狀態:

      tanzu cluster get CLUSTER-NAME
      
    6. 將其控制平面節點和端點的 IP 位址設為靜態位址,如設定節點 DHCP 預留和端點 DNS 記錄 (僅限 vSphere) 中所述。

從物件規格來建立叢集

以下程序說明如何使用 Kubernetes 樣式的物件規格,來建立以類別為基礎的工作負載叢集:

  1. 依照以下的建立物件規格中所述,建立叢集物件規格。
  2. 依照以下的從物件規格來建立以類別為基礎的叢集中所述,從物件規格來部署叢集。
附註

在 Tanzu Kubernetes Grid v2.1 中,當您從物件規格建立叢集時,tanzu cluster create 可能會失敗,並顯示類似以下內容的錯誤:Error: workload cluster configuration validation failed...,請參閱《VMware Tanzu Kubernetes Grid v2.1 版本說明》中的執行 tanzu cluster create 時出現驗證錯誤

建立物件規格

若要為以類別為基礎的工作負載叢集建立 Kubernetes 樣式的物件規格檔案,請執行以下步驟。

獨立管理叢集
如果要將工作負載叢集部署到 具有獨立管理叢集的 vSphere、AWS 或 Azure,您可以使用 Tanzu CLI,針對以類別為基礎的工作負載叢集,將叢集組態檔轉換為 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 物件及其從屬物件

主管
如果要將工作負載叢集部署到 具有主管的 vSphere 8,請建立或調整 Cluster 物件規格,如 設定主管部署的以類別為基礎的叢集中所述。
  • vSphere 8 說明文件會提供範例 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 createtanzu mc create 建立的管理叢集而不是 vSphere with Tanzu 主管叢集管理的工作負載叢集,部署 Harbor 或其他服務可使所有工作負載共用單一服務執行個體。

每個 Tanzu Kubernetes Grid 執行個體只能有一個共用服務叢集。

通過將 Harbor 部署到共用服務叢集,同一管理叢集管理的所有工作負載叢集可以共用單個 Harbor 執行個體。有關部署 Harbor 的說明,請參閱為服務登錄安裝 Harbor

若要建立共用服務叢集,請執行以下操作:

  1. 為叢集建立叢集組態 YAML 檔。我們建議使用 prod 叢集計劃,而不是 dev 計劃。例如:

    INFRASTRUCTURE_PROVIDER: vsphere
    CLUSTER_NAME: YOUR-CLUSTER-NAME
    CLUSTER_PLAN: prod
    

    其中 YOUR-CLUSTER-NAME 是您為叢集選擇的名稱。例如,tkg-services

  2. (僅限 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
    
  3. 按照上述從組態檔建立叢集中所述建立共用服務叢集。

  4. kubectl 的內容設定為管理叢集的內容。例如:

    kubectl config use-context mgmt-cluster-admin@mgmt-cluster
    

    在此範例中,mgmt-cluster 是管理叢集的名稱。

  5. 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

  6. 透過執行以下命令檢查標籤是否已正確套用:

    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
    
  7. 取得共用服務叢集 admin 認證。例如:

    tanzu cluster kubeconfig get tkg-services --admin
    
  8. kubectl 的內容設定為共用服務叢集。例如:

    kubectl config use-context tkg-services-admin@tkg-services
    

後續步驟

check-circle-line exclamation-circle-line close-line
Scroll to top icon