遵循此工作流程使用 kubectl 命令和 YAML 中定義的叢集規格以宣告方式佈建 TKG 服務叢集。
此工作流程支援使用 kubectl 和 YAML 以宣告方式佈建 TKG 叢集。
必要條件
在開始佈建工作流程之前,請確認滿足或完成以下必要條件:
- 安裝或將您的環境更新到最新的 主管 版本。請參閱執行 TKG 服務 叢集。
- 使用最新的 Tanzu Kubernetes 版本 建立或更新內容程式庫。請參閱管理用於 TKG 服務 叢集的 Kubernetes 版本。
- 建立並設定用於主控 TKG 叢集的 vSphere 命名空間。請參閱設定 vSphere 命名空間 以便託管 TKG 服務 叢集。
程序
- 安裝 vSphere 適用的 Kubernetes CLI 工具。
- 使用 kubectl 對 主管 進行驗證。
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
備註: 主管 的 FQDN 在啟用後才能使用。如需詳細資料,請參閱 主管 組態說明文件。 - 驗證是否成功登入 主管。
您應該會看到類似下列內容的訊息:
Logged in successfully. You have access to the following contexts: 192.197.2.65 tkg2-cluster-namespace
其中,192.197.2.65
是 主管 環境,tkg2-cluster-namespace
是計劃佈建 TKG 叢集的 vSphere 命名空間 的環境。 - 驗證目標 vSphere 命名空間 是否為目前環境。
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE 192.197.2.65 192.197.2.65 wcp:10.197.154.65:[email protected] * tkg2-cluster-namespace 10.197.154.65 wcp:10.197.154.65:[email protected] tkg2-cluster-namespace
如果目標 vSphere 命名空間 不是目前環境,請切換到該目標命名空間。kubectl config use-context tkg2-cluster-namespace
- 列出 vSphere 命名空間 中可用的虛擬機器類別。
kubectl get virtualmachineclass
您只能使用已繫結到目標命名空間的虛擬機器類別。如果沒有看到任何虛擬機器類別,請驗證預設虛擬機器類別是否已與 vSphere 命名空間 相關聯。另請參閱 對虛擬機器類別錯誤進行疑難排解。 - 取得可用的持續性磁碟區儲存區類別。
kubectl describe namespace VSPHERE-NAMESPACE-NAME
命令將傳回有關命名空間的詳細資料,包括採用tkg2-storage-policy.storageclass.storage.k8s.io/requests.storage
形式的儲存區類別。字串的第一個 Token 是儲存區類別名稱,在本範例中為tkg2-storage-policy
。命令kubectl describe storageclasses
還會傳回可用的儲存區類別,但需要 vSphere 管理員權限。 - 列出可用的 Tanzu Kubernetes 版本。
您可以使用以下任一命令執行此操作:
kubectl get tkr
kubectl get tanzukubernetesreleases
此命令將傳回可供您在此 vSphere 命名空間 中可供您使用的 TKR,並顯示它們與要部署到的 主管 的相容性。只能使用此命令傳回的版本。如果沒有看到任何版本或所需版本,請確認您已完成以下作業:a) 已建立 TKR 內容程式庫;b) 已將內容程式庫與所需 OVA 檔案同步;c) 已將內容程式庫與將要佈建 TKG 叢集的 vSphere 命名空間 相關聯。 - 編寫用於佈建 TKG 叢集的 YAML 檔案。
- 確定將建立的叢集類型並檢閱其 API 和功能:
- TanzuKubernetesCluster:使用 TanzuKubernetesCluster v1alpha3 API
- 叢集: 使用叢集 v1beta1 API
- 從用於佈建叢集的範例 YAML 之一開始。
- 將 YAML 檔案儲存為
tkg2-cluster-1.yaml
或類似格式。 - 使用從上述命令輸出中收集的資訊填入 YAML,包括:
- 叢集的名稱,例如
tkg2-cluster-1
- 目標 vSphere 命名空間
- 繫結的虛擬機器類別,例如
guaranteed-medium
- 叢集節點和持續性磁碟區的儲存區類別
- 控制平面和 worker 節點 (複本) 數
- TKR NAME 字串指定的 Tanzu Kubernetes 版本,例如
v1.25.7+vmware.3-fips.1-tkg.1
- 叢集的名稱,例如
- 根據需要自訂 TGK 叢集 YAML。
- 為頻繁變換的元件 (例如
containerd
) 新增單獨的磁碟區 - 為叢集節點和持續性磁碟區指定預設持續性儲存區類別
- 自訂叢集網路,包括 CNI、網繭和服務 CIDR
- 為頻繁變換的元件 (例如
- 使用 YAML 語法檢查程式並驗證 YAML 是否有效。
完成此步驟後,將產生用於佈建 TKG 叢集的有效 YAML。 - 確定將建立的叢集類型並檢閱其 API 和功能:
- 透過執行下列命令來佈建 TKG 叢集。
kubectl apply -f tkg2-cluster-1.yaml
預期的結果:tanzukubernetescluster.run.tanzu.vmware.com/tkg2-cluster-1 created
- 監控 TKG 叢集的佈建。
kubectl get tanzukubernetesclusters
kubectl get tkc
其中,如果使用 v1beta1 API 建立叢集,請執行以下作業:kubectl get cluster
一開始,READY 狀態為 False,因為正在佈建叢集。幾分鐘後,該狀態應為 True。NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE tkg2-cluster-1 3 6 v1.25.7+vmware.3-fips.1-tkg.1 49m True True
執行其他命令,以檢視有關叢集的詳細資料。kubectl get tanzukubernetescluster,cluster,virtualmachinesetresourcepolicy,virtualmachineservice,kubeadmcontrolplane,machinedeployment,machine,virtualmachine
kubectl describe tanzukubernetescluster tkg2-cluster-1
- 使用 vSphere Client 監控叢集節點部署。
在 vSphere 的 主機和叢集詳細目錄中,您應該會看到叢集節點虛擬機器正在目標 vSphere 命名空間 中部署。
- 所有 TKG 叢集節點都處於就緒狀態後,使用 kubectl 適用的 vSphere 外掛程式 登入此叢集。
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN \ --vsphere-username USERNAME \ --tanzu-kubernetes-cluster-name CLUSTER-NAME \ --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
例如:kubectl vsphere login --server=192.197.2.65 --vsphere-username [email protected] \ --tanzu-kubernetes-cluster-name tkg2-cluster-1 --tanzu-kubernetes-cluster-namespace tkg2-cluster-namespace
備註: 只有在控制平面節點正在執行且驗證服務外掛程式已啟動後,此登入命令才會成功。如果 worker 節點正在建立過程中,則登入可能會不穩定。建議在所有叢集節點都處於就緒狀態後再登入。 - 將內容切換為 TKG 叢集,使其成為目前內容。
成功登入 TKG 叢集後,您應該會看到類似以下內容的訊息。
Logged in successfully. You have access to the following contexts: 192.197.2.65 tkg2-cluster-namespace tkg2-cluster-1
其中,192.197.2.65
是 主管 內容,tkg2-cluster-namespace
是 vSphere 命名空間 內容,tkg2-cluster-1
是 TKG 叢集內容。切換為 TKG 叢集內容。kubect config use-context tkg2-cluster-1
- 檢查 TKG 叢集資源。
kubectl get nodes
kubectl get namespaces
kubectl get pods -A
kubectl cluster-info
kubectl api-resources
- 透過部署測試網繭來執行 TKG 叢集作業,並驗證其是否按預期般運作。