組態檔和物件規格

本主題說明如何使用平面組態檔或 Kubernetes 樣式的物件規格設定 Tanzu Kubernetes Grid (TKG) 工作負載叢集。有關 IaaS 特定指示,請參閱:

叢集類型

如何設定工作負載叢集,取決於叢集類型,如下列各節中所述。

  • (預設類型) 以類別為基礎的叢集會將 Kubernetes 樣式的物件規格用於 Cluster 物件。若要建立以類別為基礎的叢集,您可以將此物件規格或具有設定大寫帶底線的變數 (例如 CLUSTER_NAME) 的平面結構的叢集組態檔,傳遞到 tanzu cluster create

    • 更進階的自訂可能還需要有 ClusterBootstrap 及其所參考物件的規格。
  • (舊版類型) 以計劃為基礎的叢集和 TKC 叢集會使用具有平面結構的叢集組態檔,該檔案會設定大寫帶底線的變數,例如 CLUSTER_NAME。若要建立舊版叢集,請將此組態檔傳遞到 tanzu cluster create

    • 更進階的自訂可能需要 ytt 覆疊,才能自訂工作負載叢集或叢集計劃。有關如何下載和安裝 ytt 的資訊,請參見安裝 Carvel 工具

如需有關上述叢集類型及其使用的叢集 API 提供者的詳細資訊,請參閱:

如需為工作負載叢集選擇哪個組態檔的相關資訊,請參閱下表。

組態檔

您可以將 … 與 Tanzu CLI 結合使用 建立 … 類型的工作負載叢集 在基礎結構上…
平面叢集組態檔
  • 以類別為基礎的叢集
  • 以計劃為基礎的叢集
  • TKC 叢集
  • 以類別為基礎的叢集可位於具有獨立管理叢集的 vSphere 7 和 8 以及 AWS 和 Azure 上
  • 以計劃為基礎的叢集可位於具有獨立管理叢集的 vSphere 7 和 8 以及 AWS 和 Azure 上
  • TKC 叢集可以位於具有主管的 vSphere 8 上
Kubernetes 樣式的物件規格 以類別為基礎的叢集 具有主管的 vSphere 8;具有獨立管理叢集的 vSphere 7 和 8;AWS 和 Azure

使用叢集組態檔來設定工作負載叢集

您可以使用叢集組態檔來設定以下類型的叢集:

  • 以類別為基礎的叢集:這包括部署到:

    • 具有獨立管理叢集的 vSphere 7 和 8
    • AWS
    • Azure

    如果要將以類別為基礎的工作負載部署到具有主管的 vSphere 8,您必須從物件規格來部署它,如設定主管部署的以類別為基礎的叢集 (僅限 vSphere 8) 中所述。

  • (舊版) 以計劃為基礎的叢集和 TKC 叢集:這包括部署到:

    • 對於以計劃為基礎的叢集:具有獨立管理叢集的 vSphere 7 和 8 以及 AWS 和 Azure
    • 對於 TKC 叢集:具有主管的 vSphere 8

關於叢集組態檔

將工作負載叢集部署到 vSphere、AWS 或 Azure 之前,請為叢集建立組態檔。當您將此檔案傳遞到 tanzu cluster create--file 選項時,Tanzu CLI 會使用該檔案中定義的組態資訊,來連線到您的目標平台,並建立叢集將使用的資源。

若要建立叢集組態檔,您可以複製先前部署的現有組態檔,並進行更新。或者,也可以使用空白範本從頭開始建立檔案:

建立第一個叢集組態檔

在您部署工作負載叢集時,該叢集的大部分組態會與您用來部署該叢集的獨立管理叢集的組態相同。因此,若要為工作負載叢集建立組態檔,最簡單的做法是從獨立管理叢集組態檔的複本開始。

  1. 找出管理叢集的 YAML 組態檔:

    • 如果您是從安裝程式介面來部署管理叢集,但您在執行 tanzu mc create --ui 時並未指定 --file 選項,則組態檔會儲存在 ~/.config/tanzu/tkg/clusterconfigs/ 中。該檔案會有一個隨機產生的名稱,例如 bm8xk9bv1v.yaml
    • 如果您是從安裝程式介面來部署管理叢集,並且指定了 --file 選項,則會從您指定的檔案中取得管理叢集組態。
    • 如果您沒有使用安裝程式介面,而是從 Tanzu CLI 來部署管理叢集,則會從您在 --file 選項中指定的檔案,或是從預設位置 ~/.config/tanzu/tkg/cluster-config.yaml,來取得管理叢集組態。
  2. 建立管理叢集組態檔的複本,並使用新名稱來儲存該檔案。例如,將檔案另存為 my-aws-cluster.yamlmy-azure-cluster.yamlmy-vsphere-cluster.yaml

  3. 更新叢集組態檔中的設定。如果您要將工作負載叢集設定為使用預設 Ubuntu 20.04 以外的作業系統,則必須設定 OS_NAMEOS_VERSION 值。安裝程式介面在它儲存到 ~/.config/tanzu/tkg/clusterconfigs 的管理叢集組態檔中,不會包含節點虛擬機器作業系統值。

  4. 儲存檔案。

若要為具有主管的 vSphere 8 上的 TKC 叢集準備一個叢集組態檔,請參閱設定主管部署的 TKC 叢集 (舊版)

使用物件規格來設定工作負載叢集

您可以使用 Kubernetes 樣式的物件規格檔案,將以類別為基礎的工作負載叢集部署到:

  • 不含主管的 vSphere 7 和 8
  • 具有主管的 vSphere 8
  • AWS
  • Azure

關於物件規格檔案

物件規格檔案具有與叢集組態檔相同的用途。當您將物件規格傳遞到 tanzu cluster create--file 選項時,Tanzu CLI 會使用物件規格中定義的組態資訊來建立叢集。

建立第一個物件規格檔案

與其他 Kubernetes 物件一樣,您可以建立和編輯物件規格,來設定以類別為基礎的工作負載叢集。對於叢集物件,以下是:

  • Cluster 物件:設定大多數叢集選項,例如叢集拓撲。您可以變更並重新套用此物件規格,以變更執行中叢集的組態。
  • (選用;vSphere with Tanzu) ClusterBootstrap 物件:設定僅在第一次建立叢集時所套用的非預設選項,例如容器網路介面 (CNI) 和容器儲存區介面 (CSI),以及無法在執行中叢集中重新設定的選項。如需詳細資訊,請參閱進行一次性基礎結構設定

若要建立第一個物件規格檔案,請執行以下動作:

  • 如果要將以類別為基礎的工作負載叢集部署到不含主管的 vSphere、AWS 或 Azure,您可以使用 Tanzu CLI,將叢集組態檔轉換為物件規格檔案,而無需部署叢集:

    • (全域組態) 使用 Tanzu CLI 的 auto-apply-generated-clusterclass-based-configuration 功能。依預設,此功能會設定為 false。在 auto-apply-generated-clusterclass-based-configuration 設定為 false,而且您執行具有 --file 旗標的 tanzu cluster create 時,命令會將叢集組態檔轉換為物件規格檔案,並在不建立叢集的情況下退出。檢閱組態後,請使用 Tanzu CLI 產生的物件規格檔案來重新執行 tanzu cluster create,如從物件規格來建立以類別為基礎的叢集中所述。如果您已更新預設組態,若要重設回 false,請執行:

      tanzu config set features.cluster.auto-apply-generated-clusterclass-based-configuration false
      
    • (單一叢集) 將 --dry-run 選項傳遞給 tanzu cluster create,並將輸出儲存到檔案。使用相同的選項和組態 --file,亦即,您在建立叢集時將使用的選項和組態,例如:

      tanzu cluster create my-cluster --file my-cluster-config.yaml --dry-run > my-cluster-spec.yaml
      

      之後,您就可以使用此物件規格來部署叢集,如從物件規格來建立以類別為基礎的叢集中所述。

  • 如果您將以類別為基礎的工作負載叢集部署到具有主管的 vSphere 8,請建立或調整 Cluster 物件規格,如設定主管部署的以類別為基礎的叢集 (僅限 vSphere 8) 中所述。vSphere 8 說明文件會提供範例 Cluster 物件規格供您使用,例如 v1beta1 範例:預設叢集

設定一次性基礎結構設定 (vSphere with Tanzu)

您可以在 Cluster 物件規格中設定最常見的叢集設定,但某些叢集元件來自叢集節點所依據的 Tanzu Kubernetes 版本 (TKr)。例如,TKr 會指定叢集使用的 CNI、CSI 和 Pinniped 版本。

在建立叢集期間,這些基礎結構層級的選項會供 ClusterBootstrap 物件套用,而在正在執行的叢集中,就無法變更它們。在建立叢集之前,若要設定這些選項,則其一般程序如下:

  1. ClusterBootstrap 物件及其參考的任何自訂物件 (例如 CalicoConfig 物件),建立物件規格。

  2. Cluster 物件本身建立物件規格。

  3. 在所有物件規格的 metadata 中,包含要建立之叢集的名稱和命名空間,例如:

    apiVersion: run.tanzu.vmware.com/v1alpha3
    kind: ClusterBootstrap
    metadata:
      name: MY-CLUSTER
      namespace: MY-NAMESPACE
    

    自訂可能需要其他中繼資料,例如:註解。

  4. 將所有物件規格 (包括 Cluster 定義) 串連至單一檔案中。使用由三條虛線 (---) 所構成的線條來分隔規格。

  5. 將物件規格傳遞至 kubectl apply--file 選項,例如:

    kubectl config use-context CONTEXT-NAME
    
    kubectl apply -f my-custom-cluster-objects.yaml
    

替代方法:對於最後兩個步驟,替代方法是對所有物件規格 (Cluster 物件除外) 執行 kubectl apply -f,然後執行含有 Cluster 物件規格的 tanzu cluster create --file

有關此程序的特定範例,請參閱使用非預設 CNI 來建立叢集,該範例會將叢集的 CNI 設定為 Calico。

工作負載叢集、kubectlkubeconfig

建立工作負載叢集時,Tanzu Kubernetes Grid 不會自動設定其 kubectl 內容。必須使用 kubectl config use-context 命令,來手動設定工作負載叢集的 kubectl 內容。

依預設,除非您指定 KUBECONFIG 選項將叢集的 kubeconfig 儲存至特定檔案,否則,所部署的所有工作負載叢集都將新增到共用的 .kube/config 檔案中。如果您刪除共用的 .kube/config 檔案,但仍具有管理叢集的 .kube-tkg/config 檔案,則可以使用 tanzu cluster kubeconfig get CLUSTER-NAME 命令,來復原工作負載叢集的 .kube/config

當 Tanzu Kubernetes Grid 作業正在執行期間,請勿變更內容或編輯 .kube-tkg/config.kube/config 檔案。

後續步驟

針對您的基礎結構,繼續執行以下的叢集組態主題:

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