Tanzu Kubernetes Grid 服務宣告式 API 公開了多個用於設定 Tanzu Kubernetes 叢集的參數。請參閱用於佈建和自訂叢集的所有參數和使用準則的清單和說明。

用於佈建 Tanzu Kubernetes 叢集的標註 YAML

標註 YAML 列出了用於佈建 Tanzu Kubernetes 叢集的所有可用參數以及每個欄位的摘要註解。
備註: 未驗證用於佈建叢集的標註 YAML。如需此類指引,請參閱以下範例: 使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 佈建 Tanzu Kubernetes 叢集的範例
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
  name: <tanzu kubernetes cluster name>
  namespace: <vsphere namespace where the cluster will be provisioned>
spec:
  distribution:
    version: <tanzu kubernetes release version string: full, point, short>      
  topology:                               
    controlPlane:
      count: <integer either 1 or 3>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn control plane component (such as etcd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB> 
    workers:                              
      count: <integer from 0 to 150>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn worker node component (such as containerd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB>              
  settings: #all spec.settings are optional
    storage: #optional storage settings
      classes: [<array of kubernetes storage classes for dynamic pvc provisioning>]
      defaultClass: <default kubernetes storage class>
    network: #optional network settings
      cni: #override default cni set in the tkgservicesonfiguration spec
        name: <antrea or calico>
      pods: #custom pod network
        cidrBlocks: [<array of pod cidr blocks>]
      services: #custom service network
        cidrBlocks: [<array of service cidr blocks>]
      serviceDomain: <custom service domain>
      proxy: #proxy server for outbound connections
        httpProxy: http://<IP:PORT> 
        httpsProxy: http://<IP:PORT>
        noProxy: [<array of CIDRs to not proxy>]
      trust: #trust fields for custom public certs for tls
        additionalTrustedCAs:
          - name: <first-cert-name>
            data: <base64-encoded string of PEM encoded public cert 1>
          - name: <second-cert-name>
            data: <base64-encoded string of PEM encoded public cert 2>

用於佈建 Tanzu Kubernetes 叢集的參數

下表列出並說明用於佈建 Tanzu Kubernetes 叢集的所有參數和可接受的值。如需範例,請參閱設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例

表 1. 用於佈建 Tanzu Kubernetes 叢集的參數
名稱 說明
apiVersion run.tanzu.vmware.com/v1alpha1 指定 Tanzu Kubernetes Grid 服務 API 的版本。
kind TanzuKubernetesCluster 指定要建立的 Kubernetes 資源類型。唯一允許的值為 TanzuKubernetesCluster (區分大小寫)。
metadata 適用於叢集中繼資料的區段 包含叢集中繼資料,例如 namenamespace。這是標準 Kubernetes 中繼資料,因此您可以使用 generateName (而非 name),新增標籤和註解等。
name 使用者定義的字串,可接受英數字元和破折號,例如:my-tkg-cluster-1 指定要建立的叢集名稱。目前叢集命名限制:
  • 名稱長度必須為 41 個字元或更少。
  • 名稱必須以字母開頭。
  • 名稱可以包含字母、數字和連字號。
  • 名稱必須以字母或數字結尾。
namespace 使用者定義的字串,可接受英數字元和破折號,例如:my-sns-1 識別將在其中部署叢集的主管命名空間的名稱。這是對主管叢集中存在的主管命名空間的參考。
spec 適用於叢集的技術規格的區段 包括叢集結束狀態的規格 (以宣告式方式表示),包括節點 toplogy 和 Kubernetes 軟體 distribution
distribution 用於指定 Tanzu Kubernetes 發行版本的區段 指示叢集的分佈:安裝在控制平面和工作節點上的 Tanzu Kubernetes 叢集軟體,包括 Kubernetes 本身。
version 以英數字元字串和虛線表示 Kubernetes 版本,例如:v1.20.2+vmware.1-tkg.1v1.20.2v1.20 使用語義版本標記法指定要在叢集節點上安裝的 Kubernetes 發行版本的軟體版本。可以指定完全限定版本或使用版本捷徑,例如「version: v1.20.2」(解析為與該修補程式版本相符的最新映像) 或「version: v1.20」(解析為相符的最新修補程式版本)。在建立叢集後,已解析的版本將在叢集說明中顯示為「fullVersion」。
topology 適用於叢集節點拓撲的區段 包括說明叢集節點數目、目的和組織以及配置給每個叢集節點的資源的欄位。叢集節點會根據其預期目的分組至集區:control-planeworker。每個集區都屬於同類,具有相同的資源配置並使用相同的儲存區。
controlPlane 適用於控制平面設定的區段 指定叢集控制平面的拓撲,包括節點數目 (count)、虛擬機器類型 (class) 以及為每個節點配置的儲存區資源 (storageClass)。
count 值為 13 的整數 指定控制平面節點的數目。控制平面的節點數目必須為奇數。
class 系統定義的元素,採用列舉集中字串的格式,例如:guaranteed-smallbest-effort-large 指定 VirtualMachineClass 的名稱,說明了要用於集區中每個節點的虛擬硬體設定。這會控制節點可用的硬體 (CPU 和記憶體),以及關於這些資源的要求和限制。請參閱Tanzu Kubernetes 叢集的虛擬機器類別
storageClass node-storage (例如) 識別要用於磁碟儲存區 (儲存控制平面節點之根檔案系統) 的儲存區類別。在命名空間上執行 kubectl describe ns,以檢視可用的儲存區類別。命名空間可用的儲存區類別取決於 vSphere 管理員所設定的儲存區。在叢集中複寫與主管命名空間相關聯的儲存區類別。換言之,儲存區類別在主管命名空間中必須可用,才能成為此欄位的有效值。請參閱設定和管理 vSphere 命名空間
volumes
選用儲存區設定
  • volumes:
    • name: string
    • mountPath: /dir/path
    • 容量
      • storage: GiB 大小
可以為控制平面節點上的 etcd 指定單獨的磁碟和儲存區參數。請參閱範例 使用單獨磁碟和儲存參數的叢集
workers 適用於 worker 節點設定的區段 指定叢集工作節點的拓撲,包括節點數目 (count)、虛擬機器類型 (class) 以及為每個節點配置的儲存區資源 (storageClass)。
count 介於 0 到 150 之間的整數,例如:127 指定叢集中工作節點的數目。您可以建立具有零工作節點的叢集,以允許僅具有控制平面節點的叢集。工作節點數目上限沒有硬限制,但合理的限制為 150。
備註: 對於佈建了 0 個 worker 節點的叢集,不會向其指派任何負載平衡器服務。
class 系統定義的元素,採用列舉集中字串的格式,例如:guaranteed-smallbest-effort-large 指定 VirtualMachineClass 的名稱,說明了要用於集區中每個節點的虛擬硬體設定。這會控制節點可用的硬體 (CPU 和記憶體),以及關於這些資源的要求和限制。請參閱Tanzu Kubernetes 叢集的虛擬機器類別
storageClass node-storage (例如) 識別要用於磁碟儲存區 (儲存工作節點之根檔案系統) 的儲存區類別。在命名空間上執行 kubectl describe ns,以列出可用的儲存區類別。命名空間可用的儲存區類別取決於 vSphere 管理員所設定的儲存區。在叢集中複寫與主管命名空間相關聯的儲存區類別。換言之,儲存區類別在主管命名空間中必須可用,才能有效。請參閱設定和管理 vSphere 命名空間
volumes
選用儲存區設定
  • volumes:
    • name: string
    • mountPath: /dir/path
    • 容量
      • storage: GiB 大小
可以為 worker 節點上的容器映像指定單獨的磁碟和儲存區參數。請參閱範例 使用單獨磁碟和儲存參數的叢集
settings 適用於叢集特定設定的區段;所有 spec.settings 都是可選的 識別叢集的選用執行階段組態資訊,包括網繭的節點 network 詳細資料和持續性 storage
storage 用於指定儲存區的區段 識別容器工作負載的持續性磁碟區 (PV) 儲存區項目。
classes 由一或多個使用者定義的字串所組成的陣列,例如:["gold", "silver"] 指定容器工作負載的具名持續性磁碟區 (PV) 儲存區類別。在叢集中複寫與主管命名空間相關聯的儲存區類別。換言之,儲存區類別在主管命名空間中必須可用,才能成為有效值。請參閱範例 具有儲存區類別和預設持續性磁碟區類別的叢集
defaultClass silver (例如) 指定要在叢集中標注為預設值的具名儲存區類別。如果未指定,則沒有預設值。您不需要指定一或多個 classes,即可指定 defaultClass。某些工作負載可能需要預設類別,例如 Helm。請參閱範例 具有儲存區類別和預設持續性磁碟區類別的叢集
network 適用於網路設定的區段標記 指定叢集的網路相關設定。
cni 用於指定 CNI 的區段標記 識別叢集的容器網路介面 (CNI) 外掛程式。預設值為 Antrea,不需要為新叢集指定。
name 字串 antreacalico 指定要使用的 CNI。支援 Antrea 和 Calico。系統組態將 Antrea 設定為預設 CNI。預設 CNI 可進行變更。如果使用預設值,則不需要指定此欄位。
services 用於指定 Kubernetes 服務子網路的區段標記 識別 Kubernetes 服務的網路設定。預設為 10.96.0.0/12。
cidrBlocks 陣列 ["198.51.100.0/12"] (範例) 指定要用於 Kubernetes 服務的 IP 位址範圍。預設為 10.96.0.0/12。不得與為主管叢集所選擇的設定重疊。雖然此欄位是陣列,可允許多個範圍,但目前僅允許單一 IP 範圍。如需相關網路範例,請參閱 使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 佈建 Tanzu Kubernetes 叢集的範例
pods 用於指定 Kubernetes 網繭子網路的區段標記 指定網繭的網路設定。預設為 192.168.0.0/16。區塊大小下限為 /24。
cidrBlocks 陣列 ["192.0.2.0/16"] (範例) 指定要用於 Kubernetes 網繭的 IP 位址範圍。預設為 192.168.0.0/16。不得與為主管叢集所選擇的設定重疊。網繭子網路大小必須等於或大於 /24。雖然此欄位是陣列,可允許多個範圍,但目前僅允許單一 IP 範圍。如需相關網路範例,請參閱 使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 佈建 Tanzu Kubernetes 叢集的範例
serviceDomain "cluster.local" 指定叢集的服務網域。預設值為 cluster.local
proxy 用於為叢集指定 HTTP(s) Proxy 組態的區段。如果已實作,則所有欄位為必填。 提供指定 Proxy 設定的欄位;如果已設定全域 Proxy 且未設定個別叢集 Proxy,則會自動填入。請參閱範例 具有 Proxy 伺服器的叢集
httpProxy http://<user>:<pwd>@<ip>:<port> 指定 Proxy URL,用於在叢集外部建立 HTTP 連線。
httpsProxy http://<user>:<pwd>@<ip>:<port> 指定 Proxy URL,用於在叢集外部建立 HTTPS 連線。
noProxy

不進行代理的一組 CIDR 區塊,例如:[10.246.0.0/16,192.168.144.0/20,192.168.128.0/20]

從主管叢集上的工作負載網路取得所需的值:Pod CIDRsIngress CIDRsEgress CIDRs

請參閱下面的影像,瞭解要包括在 noProxy 陣列欄位中的值。

不得代理由主管叢集上的工作負載網路用於網繭、入口和出口的子網路。

無需在 noProxy 欄位中包括來自主管叢集的服務 CIDR。Tanzu Kubernetes 叢集不會與此類服務互動。

不會自動代理 localhost127.0.0.1 端點。無需將其新增至 noProxy 欄位。

不會自動代理 Tanzu Kubernetes 叢集的網繭和服務 CIDR。無需將其新增至 noProxy 欄位。

請參閱範例 具有 Proxy 伺服器的叢集

trust trust 參數的區段標記。 不接受任何資料。
additionalTrustedCAs 為每個受信任的 CA 接受包含 namedata 的一組憑證。 不接受任何資料。
name 字串 TLS 憑證的名稱。
data 字串 PEM 編碼公用憑證的 Base64 編碼字串。

主管叢集上的工作負載網路取得所需的 noProxy 值,如圖所示。

[工作負載網路] 視窗,其中反白顯示了 [網繭 CIDR]、[入口 CIDR] 和 [出口 CIDR] 值。