Tanzu Kubernetes Grid 服務 API 提供智慧預設值和一組用於自訂 Tanzu Kubernetes 叢集的選項。請參閱範例,以根據您的需求使用不同組態和自訂佈建各種類型的叢集。
用於佈建 Tanzu Kubernetes 叢集的最小 YAML
以下範例 YAML 是叫用 Tanzu Kubernetes Grid 服務和佈建使用所有預設設定的 Tanzu Kubernetes 叢集所需的最小組態。
最小範例 YAML 的特性包括:
- 列為 v1.19 的 Tanzu Kubernetes 版本版本將會解析為與該次要版本相符的最新發行版,例如
v1.19.7+vmware.1-tkg.1.xxxxxx
。請參閱驗證 Tanzu Kubernetes 叢集的更新相容性。 - 虛擬機器類別
best-effort-<size>
沒有保留區。如需詳細資訊,請參閱 Tanzu Kubernetes 叢集的虛擬機器類別。 - 該叢集不包含容器的持續性儲存區。如果需要,將在
spec.settings.storage
中進行設定。請參閱以下儲存區範例。 - 某些工作負載 (例如 Helm) 可能需要
spec.settings.storage.defaultClass
。請參閱以下儲存區範例。 - 未指定
spec.settings.network
區段。這表示該叢集使用下列預設網路設定:- 預設 CNI:
antrea
- 預設網繭 CIDR:
192.168.0.0/16
- 預設服務 CIDR:
10.96.0.0/12
- 預設服務網域:
cluster.local
備註: 網繭的預設 IP 範圍為192.168.0.0/16
。如果此子網路已在使用中,則必須指定不同的 CIDR 範圍。請參閱以下自訂網路範例。 - 預設 CNI:
apiVersion: run.tanzu.vmware.com/v1alpha1 #TKGS API endpoint kind: TanzuKubernetesCluster #required parameter metadata: name: tkgs-cluster-1 #cluster name, user defined namespace: tgks-cluster-ns #vsphere namespace spec: distribution: version: v1.20 #Resolves to latest TKR 1.20 topology: controlPlane: count: 1 #number of control plane nodes class: best-effort-medium #vmclass for control plane nodes storageClass: vwt-storage-policy #storageclass for control plane workers: count: 3 #number of worker nodes class: best-effort-medium #vmclass for worker nodes storageClass: vwt-storage-policy #storageclass for worker nodes
使用單獨磁碟和儲存參數的叢集
以下範例 YAML 顯示如何為叢集控制平面和 worker 節點佈建使用單獨磁碟和儲存參數的叢集。
對頻繁變換的資料使用單獨的磁碟和儲存參數,有助於盡可能減少與使用連結複製相關的讀取寫入額外負荷,並且還有其他優勢。有兩個主要使用案例:
- 在 etcd 資料庫的控制平面節點上自訂儲存區效能
- 為 worker 節點上的容器映像自訂磁碟大小
此範例具有下列特性:
spec.topology.controlPlane.volumes
設定會為 etcd 資料庫指定單獨的磁碟區。spec.topology.workers.volumes
設定會為容器映像指定單獨的磁碟區。- Tanzu Kubernetes 1.17 版及更新版本支援容器映像的
mountPath: /var/lib/containerd
。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-5 namespace: tgks-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi
具有自訂 Antrea 網路的叢集
下列 YAML 說明如何使用 Antrea CNI 的自訂網路範圍佈建
Tanzu Kubernetes 叢集。
- 由於套用了自訂網路設定,即使使用了預設 Antrea CNI,仍需要
cni.name
參數。- CNI 名稱:
antrea
- 自訂網繭 CIDR:
193.0.2.0/16
- 自訂服務 CIDR:
195.51.100.0/12
- 自訂服務網域:
managedcluster.local
- CNI 名稱:
- 自訂 CIDR 區塊不能與主管叢集重疊。如需詳細資訊,請參閱 使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 之 Tanzu Kubernetes 叢集的組態參數。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkg-cluster-3-antrea namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: class: guaranteed-medium count: 3 storageClass: vwt-storage-policy workers: class: guaranteed-medium count: 5 storageClass: vwt-storage-policy settings: network: cni: name: antrea #Use Antrea CNI pods: cidrBlocks: - 193.0.2.0/16 #Must not overlap with SVC services: cidrBlocks: - 195.51.100.0/12 #Must not overlap with SVC serviceDomain: managedcluster.local
具有自訂 Calico 網路的叢集
下列 YAML 示範了如何佈建具有自訂 Calico 網路的
Tanzu Kubernetes 叢集。
- Calico 不是預設 CNI,已在資訊清單中明確命名。若要在服務層級變更預設 CNI,請參閱設定 v1alpha1 API Tanzu Kubernetes Grid 服務的範例。
- CNI 名稱:
calico
- 自訂網繭 CIDR:
198.51.100.0/12
- 自訂服務 CIDR:
192.0.2.0/16
- 自訂服務網域:
managedcluster.local
- CNI 名稱:
- 網路將使用自訂 CIDR 範圍,而不是預設值。這些範圍不得與 主管叢集 重疊。請參閱使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 之 Tanzu Kubernetes 叢集的組態參數。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-2 namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-large storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: network: cni: name: calico #Use Calico CNI for this cluster services: cidrBlocks: ["198.51.100.0/12"] #Must not overlap with SVC pods: cidrBlocks: ["192.0.2.0/16"] #Must not overlap with SVC serviceDomain: managedcluster.local
具有儲存區類別和預設持續性磁碟區類別的叢集
以下範例 YAML 示範了如何佈建具有用於動態 PVC 佈建之儲存區類別和預設儲存區類別的叢集。
spec.settings.storage.classes
設定為叢集中容器的持續性儲存區指定了兩個儲存區類別。- 已指定
spec.settings.storage.defaultClass
。某些應用程式需要預設類別。例如,如果要使用 Helm 或 Kubeapps 作為defaultClass
(由多個圖表參考)。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: default-storage-spec namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local" storage: classes: ["gold", "silver"] #Array of named PVC storage classes defaultClass: silver #Default PVC storage class
具有 Proxy 伺服器的叢集
可以透過將 Proxy 伺服器組態套用至叢集資訊清單,以將 Proxy 伺服器與個別 Tanzu Kubernetes 叢集搭配使用。
請注意下列特性:
spec.settings.network.proxy
區段將為此 Tanzu Kubernetes 叢集指定 HTTP(s) Proxy 組態。- 用於兩個
proxy
伺服器值的語法是http://<user>:<pwd>@<ip>:<port>
。 - 特定端點不會自動代理,包括
localhost
和127.0.0.1
,以及 Tanzu Kubernetes 叢集的網繭和服務 CIDR。無需在noProxy
欄位中包括這些內容。 noProxy
欄位接受不進行代理的一組 CIDR。從主管叢集上的工作負載網路取得所需的值。請參閱位於 使用 Tanzu Kubernetes Grid 服務 v1alpha1 API 之 Tanzu Kubernetes 叢集的組態參數的映像。- 如果在
TkgServiceConfiguration
上設定了全域 Proxy,該 Proxy 資訊將在初始部署該叢集後散佈到叢集資訊清單。只有在建立叢集時不存在 Proxy 組態欄位的情況下,全域 Proxy 組態才會新增至叢集資訊清單。換句話說,每個叢集的組態優先,而且將覆寫全域 Proxy 組態。
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-proxy namespace: tkgs-cluster-ns spec: distribution: version: v1.20 topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-policy workers: count: 5 class: guaranteed-xlarge storageClass: vwt-storage-policy settings: storage: classes: ["gold", "silver"] defaultClass: silver network: cni: name: antrea pods: cidrBlocks: - 193.0.2.0/16 services: cidrBlocks: - 195.51.100.0/12 serviceDomain: managedcluster.local proxy: httpProxy: http://10.186.102.224:3128 #Proxy URL for HTTP connections httpsProxy: http://10.186.102.224:3128 #Proxy URL for HTTPS connections noProxy: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20] #SVC Pod, Egress, Ingress CIDRs
具有 TLS 自訂憑證的叢集
與如何在
TkgServiceConfiguration
中指定
trust.additionalTrustedCAs
類似 (請參閱
Tanzu Kubernetes Grid 服務 v1alpha1 API 的組態參數),您可以在
TanzuKubernetesCluster
規格中將
trust.additionalTrustedCAs
包含在
spec.settings.network
下。例如:
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-with-custom-certs-tls namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: guaranteed-medium storageClass: vwt-storage-profile workers: count: 3 class: guaranteed-large storageClass: vwt-storage-profile distribution: version: 1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "managedcluster.local" trust: additionalTrustedCAs: - name: custom-selfsigned-cert-for-tkc data: | LS0aaaaaaaaaaaaaaabase64...
從 TkgServiceConfiguration 規格繼承全域設定或不繼承全域設定的叢集
備註: 下列範例叢集組態需要
vCenter Server 7.0U2a 版或更新版本以及至少
主管叢集 1.18.10 版。
若要佈建從
TkgServiceConfiguration
繼承全域設定的
Tanzu Kubernetes 叢集,請使用未指定或未設為 Null 的全域設定來設定叢集。
例如,如果您要設定會繼承 proxy
設定的叢集,可以使用下列任一方法:
選項 1:不要在叢集規格中包含
proxy
設定:
... settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"] serviceDomain: "tanzukubernetescluster.local"
選項 2:在規格中包含
proxy
設定,但明確將其值設定為
null
:
settings: network: proxy: null
若要佈建不會從 TkgServiceConfiguration
繼承預設值的 Tanzu Kubernetes 叢集,請設定包含所有元素但為空白值的叢集規格。
例如,如果
TkgServiceConfiguration
設定了全域
proxy
,而您要佈建不會繼承全域
proxy
設定的叢集,請在叢集規格中包含下列語法:
... settings: network: proxy: httpProxy: "" httpsProxy: "" noProxy: null
使用本機內容程式庫的叢集
若要在氣隙環境中佈建 Tanzu Kubernetes 叢集,請使用從本機內容程式庫同步的虛擬機器映像建立叢集。
若要使用本機內容程式庫映像佈建叢集,則必須在叢集規格中指定該映像。針對
distribution.version
值,您可以輸入完整映像名稱,或如果您保留來自映像目錄的名稱格式,則可以將其縮短為 Kubernetes 版本。如果您想要使用完全限定的版本號碼,請將
-----
取代為
+
。例如,如果您有名為
photon-3-k8s-v1.20.2---vmware.1-tkg.1.1d4f79a
的 OVA 映像,則可接受下列格式。
spec: distribution: version: v1.20
spec: distribution: version: v1.20.2
spec: distribution: version: v1.20.2+vmware.1-tkg.1
apiVersion: run.tanzu.vmware.com/v1alpha1 kind: TanzuKubernetesCluster metadata: name: tgks-cluster-9 namespace: tkgs-cluster-ns spec: topology: controlPlane: count: 3 class: best-effort-medium storageClass: vwt-storage-policy workers: count: 3 class: best-effort-medium storageClass: vwt-storage-policy distribution: version: v1.20.2 settings: network: cni: name: antrea services: cidrBlocks: ["198.51.100.0/12"] pods: cidrBlocks: ["192.0.2.0/16"]