创建其他用户集群

本页面介绍如何创建其他用户集群。要创建其他用户集群,您需要创建用于部署集群的 GKE On-Prem 配置文件的副本。您可以修改复制的文件,以满足您对新用户集群的预期,然后使用该文件创建集群。

您需要为要创建的每个其他用户集群复制并修改 GKE On-Prem 配置文件。

准备工作

  • 确保管理员集群正在运行。您已在安装 GKE On-Prem 时创建管理员集群。
  • 找到安装过程中由 gkectl 生成的 config.yaml 文件。此文件定义了管理员集群和用户集群的规范。您将复制并修改此文件以创建其他用户集群。
  • 找到管理员集群的 kubeconfig 文件。当您复制和修改 config.yaml 时会参考此文件。

复制配置文件

复制使用 gkectl create-config 生成修改为适合您的环境的 GKE On-Prem 配置文件。重命名副本以使用其他文件名:

cp [CONFIG_FILE] [NEW_USER_CLUSTER_CONFIG]

其中,[NEW_USER_CLUSTER_CONFIG] 是您为配置文件副本选择的名称。在这些说明中,我们将该文件称为 create-user-cluster.yaml

create-user-cluster.yaml 中,您需要更改以下字段:

  • admincluster,管理员集群的规范。您可以从文件中完全移除 admincluster 规范。
  • usercluster,用户集群的规范。

在以下部分中,您将修改 create-user-cluster.yamladminclusterusercluster 字段,然后使用该文件创建其他用户集群。

在复制的文件中,您可能需要更改以下字段:

  • gkeplatformversion,用于指定要在集群中运行的 Kubernetes 版本。(这不是 GKE On-Prem 平台版本。在将来的版本中,此字段将被重命名。)

删除 admincluster 规范

如果要从现有管理员集群中创建其他用户集群,您需要删除整个 admincluster 规范。

为此,只需删除规范及其所有子字段即可。

请务必不要删除 usercluster 规范及其任何子字段。

修改 usercluster 规范

按照以下部分中的说明更改 usercluster 字段。

更改用户集群的名称

usercluster.clustername 字段中更改用户集群名称。新的用户集群应具有与现有用户集群不同的名称。

为用户集群的节点预留 IP 地址

如果您使用的是 DHCP,请确保您有足够的 IP 来创建节点。

对于静态 IP,您应该修改提供给包含用户集群预定义 IP 地址的 usercluster.ipblockfilepath 的文件,或提供其他静态 IP YAML 文件和所需的 IP。

为负载平衡器预留 IP 地址

如果您使用的是 F5 BIG-IP 负载平衡器,请务必为用户集群的负载平衡器控制层面和 Ingress 预留两个 IP 地址。相应的字段为 usercluster.vips.controlplanevipusercluster.vips.ingressvip

更改机器要求(可选)

如果您需要此用户集群的控制层面或工作器节点使用不同数量的 CPU 或内存,或者如果您需要集群运行更多或更少的节点,请设置以下字段的值:

usercluster.masternode

  • usercluster.masternode.cpus:要使用的 CPU 核心数。
  • usercluster.masternode.memorymb:要使用的内存大小(以 MB 为单位)。
  • usercluster.masternode.replicas:要运行的此类型节点的数量。值必须为 13

usercluster.workernode

  • usercluster.workernode.cpus:要使用的 CPU 核心数。
  • usercluster.workernode.memorymd:要使用的内存大小(以 MB 为单位)。
  • usercluster.workernode.replicas:要运行的此类型节点的数量。

创建用户集群

既然您已经填充了 create-user-cluster.yaml 文件,就可以使用该文件创建其他用户集群了。

运行以下命令:

gkectl create cluster --config create-user-cluster.yaml --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

其中:

  • create-user-cluster.yaml 是您刚刚创建的配置文件。您可能为此文件选择了其他名称。
  • [ADMIN_CLUSTER_KUBECONFIG] 指向现有管理员集群的 kubeconfig

问题排查

如需了解详情,请参阅问题排查

使用 gkectl 诊断集群问题

使用 gkectl diagnose 命令识别集群问题并与 Google 共享集群信息。请参阅诊断集群问题

默认日志记录行为

对于 gkectlgkeadm,使用默认日志记录设置便已足够:

  • 默认情况下,日志条目的保存方式如下:

    • 对于 gkectl,默认日志文件为 /home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log,该文件与运行 gkectl 的本地目录中的 logs/gkectl-$(date).log 文件进行符号链接。
    • 对于 gkeadm,默认日志文件是运行 gkeadm 的本地目录中的 logs/gkeadm-$(date).log
  • 所有日志条目都会保存在日志文件中,即使它们不输出到终端(当 --alsologtostderrfalse 时)也是如此。
  • -v5 详细程度(默认)涵盖支持团队所需的所有日志条目。
  • 日志文件还包含已执行的命令和失败消息。

我们建议您在需要帮助时将日志文件发送给支持团队。

为日志文件指定非默认位置

要为 gkectl 日志文件指定非默认位置,请使用 --log_file 标志。您指定的日志文件不会与本地目录进行符号链接。

要为 gkeadm 日志文件指定非默认位置,请使用 --log_file 标志。

在管理员集群中查找 Cluster API 日志

如果虚拟机在管理员控制层面启动后无法启动,您可以通过在管理员集群中检查 Cluster API 控制器的日志来尝试进行调试:

  1. kube-system 命名空间中找到 Cluster API 控制器 pod 的名称,其中 [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
  2. 打开 pod 的日志,其中 [POD_NAME] 是 pod 的名称。您可以选择使用 grep 或类似工具来搜索错误:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager