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