可透過 kubectl 和以 YAML 形式定義的叢集規格叫用 Tanzu Kubernetes Grid 服務宣告式 API,以佈建 Tanzu Kubernetes 叢集。佈建叢集後,您可以使用 kubectl 操作該叢集並在其中部署工作負載。
此工作流程支援 Tanzu Kubernetes Grid 服務 v1alpha2 API。如果使用的是 v1alpha1 API,請參閱此工作流程。
必要條件
在開始工作流程程序之前,請確認滿足以下必要條件:
- 安裝或更新您的環境以支援 Tanzu Kubernetes Grid 服務 v1alpha2 API。如需詳細資料,請參閱需求。支援 v1alpha2 API 的 Tanzu Kubernetes 最低版本是
v1.21.2
。如需詳細資料,請參閱 VMware Tanzu Kubernetes 發行版本說明。 - 設定用於託管 Tanzu Kubernetes 叢集的 vSphere 命名空間。該命名空間需要 DevOps 工程師具有編輯權限以及共用儲存區。請參閱建立和設定 vSphere 命名空間。
- 為 Tanzu Kubernetes 版本建立內容程式庫,並同步要使用的版本。請參閱為 Tanzu Kubernetes 版本建立和管理內容程式庫。
- 確定要使用的預設虛擬機器類別以及是否需要自訂虛擬機器類別。請參閱Tanzu Kubernetes 叢集的虛擬機器類別。
- 將內容程式庫和虛擬機器類別與 vSphere 命名空間相關聯。請參閱為 Tanzu Kubernetes 版本設定 vSphere 命名空間。
程序
- 下載並安裝 vSphere 適用的 Kubernetes CLI 工具。
如需相關指引,請參閱 下載並安裝 vSphere 適用的 Kubernetes CLI 工具。
- 使用 kubectl 適用的 vSphere 外掛程式對主管叢集進行驗證。
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
如需相關指引,請參閱 以 vCenter Single Sign-On 使用者身分連線至 主管叢集。 - 驗證是否成功登入主管叢集。
您應該會看到類似下列內容的訊息:
Logged in successfully. You have access to the following contexts: 192.197.2.65 tkgs-ns
其中,192.197.2.65
是 主管叢集環境,tkgs-ns
是計劃佈建 Tanzu Kubernetes 叢集的 vSphere 命名空間的環境。 - 驗證目標 vSphere 命名空間是否為目前環境。
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE 192.197.2.65 192.197.2.65 wcp:192.197.2.65:[email protected] * tkgs-ns 192.197.2.65 wcp:192.197.2.65:[email protected] tkgs-ns
如果目標 vSphere 命名空間不是目前環境,請切換到該目標命名空間。kubectl config use-context tkgs-ns
- 列出目標 vSphere 命名空間中可用的虛擬機器類別繫結。
kubectl get virtualmachineclassbindings
您只能使用已繫結到目標命名空間的虛擬機器類別。如果看不到任何虛擬機器類別,請檢查 vSphere 命名空間中是否新增了預設虛擬機器類別。 - 取得可用的持續性磁碟區儲存區類別。
kubectl describe storageclasses
- 列出可用的 Tanzu Kubernetes 版本。
您可以使用以下任一命令執行此操作:
kubectl get tkr
kubectl get tanzukubernetesreleases
只能使用此命令傳回的版本。如果看不到任何版本或所需的版本,請確認已將所需的 OVA 檔案與內容程式庫同步。 - 編寫用於佈建 Tanzu Kubernetes 叢集的 YAML 檔案。
- 檢閱 v1alpha2 API 規格。
- 從用於佈建叢集的範例 YAML 檔案之一開始,預設或自訂均可,具體取決於您的需求。
- 將 YAML 檔案儲存為
tkgs-cluster-1.yaml
或類似格式。 - 根據您的需求並使用從上述命令輸出收集的資訊填入 YAML 檔案,包括:
- 叢集的名稱,例如
tkgs-cluster-1
- 目標 vSphere 命名空間,例如
tkgs-ns
- 繫結的虛擬機器類別,例如
guaranteed-medium
和guaranteed-small
- 叢集節點和工作負載的儲存區類別,例如
vwt-storage-policy
- 控制平面和 worker 節點 (複本) 數
- TKR NAME 字串指定的 Tanzu Kubernetes 版本,例如
v1.21.6---vmware.1-tkg.1.b3d708a
- 叢集的名稱,例如
- 根據需要自訂 YAML 檔案。例如:
- 為頻繁變換的元件 (例如
etcd
和containerd
) 新增單獨的磁碟區 - 為叢集節點指定預設持續性儲存區類別
- 自訂叢集網路,包括 CNI、網繭和服務 CIDR
- 為頻繁變換的元件 (例如
完成此步驟後,將產生用於佈建 TKGS 叢集的有效 YAML。例如:apiVersion: run.tanzu.vmware.com/v1alpha2 kind: TanzuKubernetesCluster metadata: name: tkgs-cluster-1 namespace: tkgs-ns spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi tkr: reference: name: v1.21.6---vmware.1-tkg.1.b3d708a nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-medium storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi tkr: reference: name: v1.21.6---vmware.1-tkg.1.b3d708a - name: worker-nodepool-a2 replicas: 2 vmClass: guaranteed-small storageClass: vwt-storage-policy tkr: reference: name: v1.21.6---vmware.1-tkg.1.b3d708a settings: storage: defaultClass: vwt-storage-policy
備註: 上述範例使用預設叢集網路,即對叢集網繭和服務使用 Antrea CNI 和預設 CIDR 範圍。 - 透過執行下列 kubectl 命令來佈建叢集。
kubectl apply -f tkgs-cluster-1.yaml
預期的結果:tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
- 使用 kubectl 監控叢集節點部署。
kubectl get tanzukubernetesclusters
最初,叢集未就緒,因為它正在佈建中。NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE tkgs-cluster-1 3 5 v1.21.6---vmware.1-tkg.1.b3d708a 2m4s False True
幾分鐘後,READY 狀態應為 True。NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE tkgs-cluster-1 3 5 v1.21.6---vmware.1-tkg.1.b3d708a 13m True True
如需其他指導,請參閱 使用 kubectl 監控 Tanzu Kubernetes 叢集狀態。 - 使用 vSphere Client 監控叢集節點部署。
在 vSphere 主機和叢集詳細目錄中,您應該會看到虛擬機器節點正在目標 vSphere 命名空間中部署。如需其他指導,請參閱 使用 vSphere Client 監控 Tanzu Kubernetes 叢集狀態。
- 執行其他
kubectl
命令驗證叢集佈建。kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
如需其他指引,請參閱 〈使用 Tanzu Kubernetes 叢集運作命令〉。對於疑難排解,請參閱 〈對 Tanzu Kubernetes 叢集進行疑難排解〉。 - 使用 kubectl 適用的 vSphere 外掛程式 登入叢集。
kubectl vsphere login --server=IP-ADDRESS --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 tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
- 驗證是否成功登入 Tanzu Kubernetes 叢集。
您應該會看到類似下列內容的訊息。
Logged in successfully. You have access to the following contexts: 192.197.2.65 tkgs-cluster-1 tkgs-ns
其中,192.197.2.65
是 主管叢集環境,tkgs-ns
是 vSphere 命名空間環境,tkgs-cluster-1
是 Tanzu Kubernetes 叢集環境。 - 使用
kubectl
列出可用的叢集環境。kubectl config get-contexts
例如:CURRENT NAME CLUSTER AUTHINFO NAMESPACE 192.197.2.65 192.197.2.65 wcp:192.197.2.65:[email protected] * tkgs-cluster-1 192.197.2.67 wcp:192.197.2.67:[email protected] tkgs-ns 192.197.2.65 wcp:192.197.2.65:[email protected] tkgs-ns
如有必要,請使用kubect config use-context tkgs-cluster-1
切換到 Tanzu Kubernetes 叢集,使其成為目前環境。 - 使用以下 kubectl 命令驗證叢集佈建。
kubectl get nodes
例如:NAME STATUS ROLES AGE VERSION tkgs-cluster-1-control-plane-6ln2h Ready control-plane,master 30m v1.21.6+vmware.1 tkgs-cluster-1-control-plane-6q67n Ready control-plane,master 33m v1.21.6+vmware.1 tkgs-cluster-1-control-plane-jw964 Ready control-plane,master 37m v1.21.6+vmware.1 tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-h5fp8 Ready <none> 32m v1.21.6+vmware.1 tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-q4g24 Ready <none> 33m v1.21.6+vmware.1 tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-vdcn4 Ready <none> 33m v1.21.6+vmware.1 tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-nh4dg Ready <none> 34m v1.21.6+vmware.1 tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-vvfmf Ready <none> 33m v1.21.6+vmware.1
- 使用其他 kubectl 命令驗證叢集佈建。
kubectl get namespaces
kubectl get pods -A
kubectl cluster-info
kubectl api-resources
- 定義適當的網繭安全性原則。
依預設, Tanzu Kubernetes 叢集啟用了 PodSecurityPolicy 許可控制器。如需相關指引,請參閱 將網繭安全性原則與 Tanzu Kubernetes 叢集搭配使用。根據工作負載和使用者,您需要為系統提供的 PodSecurityPolicy 建立繫結,或者建立自訂 PodSecurityPolicy。請參閱 網繭安全性原則的角色繫結範例。
- 部署範例工作負載並驗證叢集建立。
如需相關指引,請參閱 在 Tanzu Kubernetes 叢集上部署工作負載。
- 透過部署 TKG 延伸,使叢集正常運作。
如需相關指引,請參閱 在 Tanzu Kubernetes 叢集上部署 TKG 套件。