可以通过 kubectl 和使用 YAML 定义的集群规范调用 Tanzu Kubernetes Grid 服务 声明性 API 来置备 Tanzu Kubernetes 集群。置备集群后,可以使用 kubectl 运行集群并在其中部署工作负载。

该工作流提供了端到端集群置备过程。每个步骤都包含链接,可用于了解有关特定任务的详细信息。

前提条件

完成以下必备条件:

过程

  1. 确认本主题顶部列出的必备条件已完成。
  2. 下载并安装 适用于 vSphere 的 Kubernetes CLI 工具
  3. 使用 kubectl 的 vSphere 插件主管集群进行身份验证。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  4. 验证是否成功登录到主管集群
    您应该会看到类似以下内容的消息:
    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 命名空间的环境。
  5. 验证目标 vSphere 命名空间是否为当前环境。
    kubectl config get-contexts
    CURRENT   NAME            CLUSTER         AUTHINFO                              NAMESPACE
              192.197.2.65    192.197.2.65    wcp:192.197.2.65:user@vsphere.local
    *         tkgs-ns         192.197.2.65    wcp:192.197.2.65:user@vsphere.local   tkgs-ns
    如果目标 vSphere 命名空间不是当前环境,请切换到该目标命名空间。
    kubectl config use-context tkgs-ns
  6. 列出目标 vSphere 命名空间中可用的虚拟机类绑定。
    kubectl get virtualmachineclassbindings
    您只能使用那些绑定到目标命名空间的虚拟机类。
    有关指导,请参见 用于 Tanzu Kubernetes 集群的虚拟机类
  7. 获取可用的持久卷存储类。
    kubectl describe storageclasses
  8. 列出可用的 Tanzu Kubernetes 版本
    您可以使用以下任一命令:
    kubectl get tkr
    kubectl get tanzukubernetesreleases
  9. 构建用于置备 Tanzu Kubernetes 集群的 YAML 文件。
    1. 从其中一个示例 YAML 文件开始。
    2. 使用从前面命令的输出中收集的信息填充集群 YAML,包括以下内容,例如:
      • 目标 vSphere 命名空间tkgs-ns
      • 用于频繁更改的节点组件的单独卷:etcdcontainerd
      • 集群节点和工作负载的存储类:vwt-storage-policy
      • 绑定的虚拟机类:guaranteed-mediumguaranteed-small
      • TKR NAME:v1.21.6---vmware.1-tkg.1.b3d708a
      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
      注: 此示例使用默认集群网络连接,即对集群 Pod 和服务使用 Antrea CNI 和默认 CIDR 范围。
    3. 根据需要,参阅配置参数的完整列表,自定义集群。
    4. 将文件保存为 tkgs-cluster-1.yaml 或类似格式。
  10. 通过运行以下 kubectl 命令置备集群。
    kubectl apply -f tkgs-cluster-1.yaml
    预期结果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  11. 使用 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 集群状态
  12. 使用 vSphere Client 监控集群节点的部署。
    在 vSphere 主机和集群清单中,您应该会看到正在目标 vSphere 命名空间中部署的虚拟机节点。
  13. 运行其他 kubectl 命令以验证集群置备。
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    有关其他指导,请参见 使用 Tanzu Kubernetes 集群操作命令
    有关故障排除,请参见 对 Tanzu Kubernetes 集群进行故障排除
  14. 使用 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 user@vsphere.local \
    --tanzu-kubernetes-cluster-name tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
  15. 验证是否成功登录到 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 集群环境。
  16. 使用 kubectl 列出可用的集群环境。
    kubectl config get-contexts
    例如:
    CURRENT   NAME             CLUSTER        AUTHINFO                                      NAMESPACE
              192.197.2.65     192.197.2.65   wcp:192.197.2.65:administrator@vsphere.local
    *         tkgs-cluster-1   192.197.2.67   wcp:192.197.2.67:administrator@vsphere.local
              tkgs-ns          192.197.2.65   wcp:192.197.2.65:administrator@vsphere.local   tkgs-ns
    如有必要,请使用 kubect config use-context tkgs-cluster-1 切换到 Tanzu Kubernetes 集群,使其成为当前环境。
  17. 使用以下 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
  18. 使用其他 kubectl 命令验证集群置备。
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  19. 定义适当的 Pod 安全策略。
    默认情况下, Tanzu Kubernetes 集群启用了 PodSecurityPolicy 准入控制器。有关指导,请参见 对 Tanzu Kubernetes 集群使用 POD 安全策略
    根据工作负载和用户,您需要为系统提供的 PodSecurityPolicy 创建绑定,或者创建自定义 PodSecurityPolicy。请参见 Pod 安全策略的角色绑定示例
  20. 部署示例工作负载并验证集群创建。
  21. 部署 TKG 扩展,使集群正常运行。