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

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

前提条件

完成以下必备条件:

过程

  1. 下载并安装 适用于 vSphere 的 Kubernetes CLI 工具。请参见下载并安装 适用于 vSphere 的 Kubernetes CLI 工具
  2. 使用 kubectl 的 vSphere 插件主管集群 进行身份验证。请参见以 vCenter Single Sign-On 用户的身份连接到 主管集群
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  3. 使用 kubectl,将上下文切换到计划置备 Tanzu Kubernetes 集群的 vSphere 命名空间
    kubectl config get-contexts
    kubectl config use-context SUPERVISOR-NAMESPACE
    例如:
    kubectl config use-context tkgs-cluster-ns
  4. 列出可用的虚拟机类绑定。请参见用于 Tanzu Kubernetes 集群的虚拟机类
    使用以下命令列出部署集群的 vSphere 命名空间 中可用的所有虚拟机类绑定。
    kubectl get virtualmachineclassbindings
    注: 命令 kubectl get virtualmachineclasses 列出 主管集群 上存在的所有虚拟机类。由于必须将虚拟机类与 vSphere 命名空间 关联,因此只能使用这些绑定到目标命名空间的虚拟机类。
  5. 通过描述命名空间获取可用的默认存储类。
    kubectl describe namespace SUPERVISOR-NAMESPACE
  6. 列出可用的 Tanzu Kubernetes 版本
    注: 请参阅 Tanzu Kubernetes 版本 列表,了解兼容性。请参见 验证 Tanzu Kubernetes 集群的更新兼容性
    kubectl get tanzukubernetesreleases
    注: 命令 kubectl get virtualmachineimages 返回有关虚拟机的常规信息。
  7. 构建用于置备 Tanzu Kubernetes 集群的 YAML 文件。
    1. 从其中一个示例 YAML 文件开始。请参见使用 Tanzu Kubernetes v1alpha1 API 置备 Tanzu Kubernetes Grid 服务 集群的示例
      例如,以下 YAML 文件使用所有可用的默认设置置备最小集群:
      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.19                         #Resolves to latest TKR 1.19 version
        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
      
    2. 使用从上述命令输出收集的信息填充集群 YAML,包括命名空间、存储类和虚拟机类。
    3. 根据需要,参阅集群配置参数的完整列表,自定义集群。请参见使用 Tanzu Kubernetes Grid 服务 v1alpha1 API Tanzu Kubernetes 集群的配置参数
    4. 将文件保存为 tkgs-cluster-1.yaml 或类似格式。
  8. 通过运行以下 kubectl 命令置备集群。
    kubectl apply -f CLUSTER-NAME.yaml
    例如:
    kubectl apply -f tkgs-cluster-1.yaml
    预期结果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  9. 使用 kubectl 监控集群节点的部署。请参见使用 kubectl 监控 Tanzu Kubernetes 集群状态
    kubectl get tanzukubernetesclusters
    示例结果:
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE     PHASE
    tkgs-cluster-2   1               3        v1.19.7+vmware.1-tkg.1.c40d30d   7m59s   running
  10. 使用 vSphere Client 监控集群节点的部署。请参见使用 vSphere Client 监控 Tanzu Kubernetes 集群状态
    例如,在vSphere清单中,应看到命名空间中部署的虚拟机节点。
  11. 运行其他命令以验证集群置备。请参见使用 Tanzu Kubernetes 集群操作命令
    例如:
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    注: 有关其他故障排除,请参见 对 Tanzu Kubernetes 集群进行故障排除
  12. 使用 kubectl 的 vSphere 插件,登录到集群。请参见以 vCenter Single Sign-On 用户身份连接到 Tanzu Kubernetes 集群
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  13. 使用以下 kubectl 命令验证集群置备。
    kubectl cluster-info
    kubectl get nodes
    kubectl get namespaces
    kubectl api-resources
  14. 部署示例工作负载并验证集群创建。请参见在 Tanzu Kubernetes 集群上部署工作负载
    注: Tanzu Kubernetes 集群已启用 pod 安全策略。根据工作负载和用户,您可能需要创建相应的 RoleBinding 或自定义 PodSecurityPolicy。请参见 对 Tanzu Kubernetes 集群使用 POD 安全策略
  15. 部署 TKG 扩展,使集群正常运行。请参见在 Tanzu Kubernetes 集群上部署 TKG 软件包