按照此工作流使用 kubectl 命令和 YAML 中定义的集群规范以声明方式置备 TKG 集群。

此工作流支持使用 kubectl 和 YAML 以声明方式置备 TKG 集群。

前提条件

在启动置备工作流之前,请验证或完成以下必备条件:

过程

  1. 安装 适用于 vSphere 的 Kubernetes CLI 工具
  2. 使用 kubectl 对 主管 进行身份验证。
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  3. 验证是否成功登录到 主管
    您应该会看到类似以下内容的消息:
    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 命名空间 的环境。
  4. 验证目标 vSphere 命名空间 是否为当前环境。
    kubectl config get-contexts
    CURRENT   NAME                    CLUSTER         AUTHINFO                                        NAMESPACE
              192.197.2.65            192.197.2.65    wcp:10.197.154.65:administrator@vsphere.local
    *         tkg2-cluster-namespace  10.197.154.65   wcp:10.197.154.65:administrator@vsphere.local   tkg2-cluster-namespace
    
    如果目标 vSphere 命名空间 不是当前环境,请切换到该目标命名空间。
    kubectl config use-context tkg2-cluster-namespace
  5. 列出目标 vSphere 命名空间 中可用的虚拟机类绑定。
    kubectl get virtualmachineclassbindings
    您只能使用那些绑定到目标命名空间的虚拟机类。如果看不到任何虚拟机类,请检查 vSphere 命名空间 中是否添加了默认虚拟机类。
  6. 获取可用的持久卷存储类。
    kubectl describe namespace VSPHERE-NAMESPACE-NAME
    命令将返回有关命名空间的详细信息,包括 tkg2-storage-policy.storageclass.storage.k8s.io/requests.storage 格式的存储类。字符串的第一个令牌是存储类名称,在本例中为 tkg2-storage-policy。命令 kubectl describe storageclasses 还会返回可用的存储类,但需要 vSphere 管理员权限。
  7. 列出可用的 Tanzu Kubernetes 版本
    您可以使用以下任一命令执行此操作:
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    此命令将返回可供您在此 vSphere 命名空间 中使用的 TKR,并显示它们与要在其上进行部署的 主管 的兼容性。只能使用此命令返回的版本。如果没有看到任何版本或所需的版本,请确认您已完成以下操作:a) 已创建 TKR 内容库;b) 已将此内容库与所需的 OVA 文件同步;c) 已将此内容库与要置备 TKG 集群的 vSphere 命名空间 相关联。
  8. 创建用于置备 TKG 集群的 YAML 文件。
    1. 确定将创建的集群类型并查看其 API 和功能:
    2. 从用于置备集群的示例 YAML 之一开始。
    3. 将 YAML 文件保存为 tkg2-cluster-1.yaml 或类似格式。
    4. 使用从上述命令的输出中收集的信息填充 YAML,包括:
      • 集群的名称,例如 tkg2-cluster-1
      • 目标 vSphere 命名空间
      • 绑定的虚拟机类,例如 guaranteed-medium
      • 用于集群节点和持久卷的存储类
      • 控制平面和工作节点(副本)数
      • TKR NAME 字符串指定的 Tanzu Kubernetes 版本,例如 v1.25.7+vmware.3-fips.1-tkg.1
    5. 根据需要自定义 TGK 集群 YAML。
      • 为频繁更改的组件(例如 containerd)添加单独的卷
      • 为集群节点和持久卷指定默认的持久存储类
      • 自定义集群网络,包括 CNI、Pod 和服务 CIDR
    6. 使用 YAML 语法检查器并验证 YAML 是否有效。
    完成此步骤后,将生成用于置备 TKG 集群的有效 YAML。
  9. 通过运行以下命令,置备 TKG 集群。
    kubectl apply -f tkg2-cluster-1.yaml
    预期结果:
    tanzukubernetescluster.run.tanzu.vmware.com/tkg2-cluster-1 created
  10. 监控 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
  11. 使用 vSphere Client 监控集群节点的部署。
    在 vSphere 的 主机和集群清单中,您应该会看到正在目标 vSphere 命名空间 中部署的集群节点虚拟机。
  12. 所有 TKG 集群节点都处于就绪状态后,使用 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 tkg2-cluster-1 --tanzu-kubernetes-cluster-namespace tkg2-cluster-namespace
    注: 只有在控制平面节点正在运行且身份验证服务插件已启动后,此登录命令才会成功。如果工作节点正在创建过程中,则登录可能会不稳定。建议在所有集群节点均就绪后再登录。
  13. 将环境切换到 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-namespacevSphere 命名空间 环境, tkg2-cluster-1 是 TKG 集群环境。
    切换到 TKG 集群环境。
    kubect config use-context tkg2-cluster-1
  14. 检查 TKG 集群资源。
    kubectl get nodes
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  15. 通过部署测试 Pod 来执行 TKG 集群操作,并验证其是否按预期工作。