可以通过 kubectl 和使用 YAML 定义的集群规范调用 Tanzu Kubernetes Grid 服务 声明性 API 来置备 Tanzu Kubernetes 集群。置备集群后,可以使用 kubectl 运行集群并在其中部署工作负载。
该工作流提供了端到端集群置备过程。每个步骤都包含链接,可用于了解有关特定任务的详细信息。
过程
- 确认本主题顶部列出的必备条件已完成。
- 下载并安装 适用于 vSphere 的 Kubernetes CLI 工具。
- 使用 kubectl 的 vSphere 插件对主管集群进行身份验证。
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
- 验证是否成功登录到主管集群。
您应该会看到类似以下内容的消息:
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 命名空间的环境。
- 验证目标 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
- 列出目标 vSphere 命名空间中可用的虚拟机类绑定。
kubectl get virtualmachineclassbindings
您只能使用那些绑定到目标命名空间的虚拟机类。
- 获取可用的持久卷存储类。
kubectl describe storageclasses
- 列出可用的 Tanzu Kubernetes 版本。
您可以使用以下任一命令:
kubectl get tkr
kubectl get tanzukubernetesreleases
- 构建用于置备 Tanzu Kubernetes 集群的 YAML 文件。
- 从其中一个示例 YAML 文件开始。
- 使用从前面命令的输出中收集的信息填充集群 YAML,包括以下内容,例如:
- 目标 vSphere 命名空间:
tkgs-ns
- 用于频繁更改的节点组件的单独卷:
etcd
和 containerd
- 集群节点和工作负载的存储类:
vwt-storage-policy
- 绑定的虚拟机类:
guaranteed-medium
和 guaranteed-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 范围。
- 根据需要,参阅配置参数的完整列表,自定义集群。
- 将文件保存为
tkgs-cluster-1.yaml
或类似格式。
- 通过运行以下 kubectl 命令置备集群。
kubectl apply -f tkgs-cluster-1.yaml
预期结果:
tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
- 使用 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
- 使用 vSphere Client 监控集群节点的部署。
在 vSphere
主机和集群清单中,您应该会看到正在目标
vSphere 命名空间中部署的虚拟机节点。
- 运行其他
kubectl
命令以验证集群置备。
kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
- 使用 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
- 验证是否成功登录到 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-ns
是
vSphere 命名空间环境,
tkgs-cluster-1
是
Tanzu Kubernetes 集群环境。
- 使用
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 集群,使其成为当前环境。
- 使用以下 kubectl 命令验证集群置备。
例如:
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
- 使用其他 kubectl 命令验证集群置备。
kubectl get namespaces
kubectl get pods -A
kubectl cluster-info
kubectl api-resources
- 定义适当的 Pod 安全策略。
根据工作负载和用户,您需要为系统提供的 PodSecurityPolicy 创建绑定,或者创建自定义 PodSecurityPolicy。请参见
Pod 安全策略的角色绑定示例。
- 部署示例工作负载并验证集群创建。
- 部署 TKG 扩展,使集群正常运行。