可透過 kubectl 和以 YAML 形式定義的叢集規格叫用 Tanzu Kubernetes Grid 服務宣告式 API,以佈建 Tanzu Kubernetes 叢集。佈建叢集後,您可以使用 kubectl 操作該叢集並在其中部署工作負載。

此工作流程支援 Tanzu Kubernetes Grid 服務 v1alpha2 API。如果使用的是 v1alpha1 API,請參閱此工作流程

必要條件

在開始工作流程程序之前,請確認滿足以下必要條件:

程序

  1. 下載並安裝 vSphere 適用的 Kubernetes CLI 工具
  2. 使用 kubectl 適用的 vSphere 外掛程式主管叢集進行驗證。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  3. 驗證是否成功登入主管叢集
    您應該會看到類似下列內容的訊息:
    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 命名空間的環境。
  4. 驗證目標 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
  5. 列出目標 vSphere 命名空間中可用的虛擬機器類別繫結。
    kubectl get virtualmachineclassbindings
    您只能使用已繫結到目標命名空間的虛擬機器類別。如果看不到任何虛擬機器類別,請檢查 vSphere 命名空間中是否新增了預設虛擬機器類別。
  6. 取得可用的持續性磁碟區儲存區類別。
    kubectl describe storageclasses
  7. 列出可用的 Tanzu Kubernetes 版本
    您可以使用以下任一命令執行此操作:
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    只能使用此命令傳回的版本。如果看不到任何版本或所需的版本,請確認已將所需的 OVA 檔案與內容程式庫同步。
  8. 編寫用於佈建 Tanzu Kubernetes 叢集的 YAML 檔案。
    1. 檢閱 v1alpha2 API 規格。
    2. 從用於佈建叢集的範例 YAML 檔案之一開始,預設自訂均可,具體取決於您的需求。
    3. 將 YAML 檔案儲存為 tkgs-cluster-1.yaml 或類似格式。
    4. 根據您的需求並使用從上述命令輸出收集的資訊填入 YAML 檔案,包括:
      • 叢集的名稱,例如 tkgs-cluster-1
      • 目標 vSphere 命名空間,例如 tkgs-ns
      • 繫結的虛擬機器類別,例如 guaranteed-mediumguaranteed-small
      • 叢集節點和工作負載的儲存區類別,例如 vwt-storage-policy
      • 控制平面和 worker 節點 (複本) 數
      • TKR NAME 字串指定的 Tanzu Kubernetes 版本,例如 v1.21.6---vmware.1-tkg.1.b3d708a
    5. 根據需要自訂 YAML 檔案。例如:
      • 為頻繁變換的元件 (例如 etcdcontainerd) 新增單獨的磁碟區
      • 為叢集節點指定預設持續性儲存區類別
      • 自訂叢集網路,包括 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 範圍。
  9. 透過執行下列 kubectl 命令來佈建叢集。
    kubectl apply -f tkgs-cluster-1.yaml
    預期的結果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  10. 使用 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 叢集狀態
  11. 使用 vSphere Client 監控叢集節點部署。
    在 vSphere 主機和叢集詳細目錄中,您應該會看到虛擬機器節點正在目標 vSphere 命名空間中部署。
  12. 執行其他 kubectl 命令驗證叢集佈建。
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    如需其他指引,請參閱 〈使用 Tanzu Kubernetes 叢集運作命令〉
    對於疑難排解,請參閱 〈對 Tanzu Kubernetes 叢集進行疑難排解〉
  13. 使用 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
  14. 驗證是否成功登入 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-nsvSphere 命名空間環境, tkgs-cluster-1Tanzu Kubernetes 叢集環境。
  15. 使用 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 叢集,使其成為目前環境。
  16. 使用以下 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
  17. 使用其他 kubectl 命令驗證叢集佈建。
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  18. 定義適當的網繭安全性原則。
    依預設, Tanzu Kubernetes 叢集啟用了 PodSecurityPolicy 許可控制器。如需相關指引,請參閱 將網繭安全性原則與 Tanzu Kubernetes 叢集搭配使用
    根據工作負載和使用者,您需要為系統提供的 PodSecurityPolicy 建立繫結,或者建立自訂 PodSecurityPolicy。請參閱 網繭安全性原則的角色繫結範例
  19. 部署範例工作負載並驗證叢集建立。
    如需相關指引,請參閱 在 Tanzu Kubernetes 叢集上部署工作負載
  20. 透過部署 TKG 延伸,使叢集正常運作。
    如需相關指引,請參閱 在 Tanzu Kubernetes 叢集上部署 TKG 套件