创建用户集群

本页面介绍了如何创建用户集群。

生成配置文件

要创建用户集群,您需要用户集群配置文件。如果您使用 gkeadm 创建管理员工作站,则 gkeadm 会为您的配置文件生成模板并填写了某些字段。

如果您没有使用 gkeadm 创建管理员工作站,则可以运行以下命令来生成模板:

gkectl create-config cluster --config [OUTPUT_PATH]

其中 [OUTPUT_PATH] 是您为生成的模板选择的路径。如果您未添加 --config 标志,则 gkectl 会将此文件命名为 user-cluster.yaml,并将其放入当前目录中。

填写配置文件

name

name 字段设置为您为用户集群选择的名称。

gkeOnPremVersion

设置 gkeOnPremVersion 字段。

vCenter

您在管理员集群配置文件vCenter 部分中设置的值是全局值。也就是说,它们适用于管理员集群和用户集群。

对于您创建的每个用户集群,您可以选择替换一些全局 vCenter 值。

如果要替换任何全局 vCenter 值,请填写用户集群配置文件中 vCenter 部分的相关字段。

network

network.ipMode.type 设置为您在管理员集群配置文件中设置的值:"dhcp""static"

如果将 ipMode.type 设置为 "static",请创建一个主机配置文件,以便为用户集群中的节点提供静态 IP 地址。然后将 network.ipBlockFilePath 设置为主机配置文件的路径。

network 部分中剩余的字段提供值。

loadBalancer

为用户集群的 Kubernetes API 服务器预留一个 VIP。为用户集群的入站服务预留另一个 VIP。提供您的 VIP 作为 loadBalancer.controlPlaneVIPloadBalancer.ingressVIP 的值。

loadBalancer.kind 设置为您在管理员集群配置文件中设置的值:"ManualLB""F5BigIP""Seesaw"。然后填写相应部分:manualLBf5BigIPseesaw

proxy

如果将拥有用户集群节点的网络位于代理服务器后面,请填写 proxy 部分。

masterNode

请填写 masterNode 部分。

nodePools

请填写 nodePools 部分。

authentication

如果您要使用 OpenID Connect (OIDC) 对用户进行身份验证,请填写 authentication.oidc 部分。

如果要为用户集群的 vCenter 服务器提供额外的证书,请填写 authentication.sni 部分。

stackdriver

请填写 stackdriver 部分。

gkeConnect

请填写 gkeConnect 部分。

cloudRun

cloudRun.enabled 设置为 truefalse

验证配置文件

填写用户集群配置文件后,请运行 gkectl check-config 以验证文件是否有效:

gkectl check-config --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [CONFIG_PATH]

其中:

  • [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径。

  • [CONFIG_PATH] 是用户集群配置文件的路径。

如果该命令返回任何失败消息,请修复问题并再次验证文件。

如果您想跳过更耗时的验证,请传递 --fast 标志。如需跳过各项验证,请使用 --skip-validation-xxx 标志。如需详细了解 check-config 命令,请参阅运行预检检查

创建用户集群

创建用户集群:

gkectl create cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
  --config [CONFIG_PATH] --skip-validation-all

其中

  • [CONFIG_PATH] 是用户集群配置文件的路径。

  • [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径。

gkectl create cluster 命令会在当前目录中创建一个名为 [USER_CLUSTER_NAME]-kubeconfig 的 kubeconfig 文件。您稍后需要此 kubeconfig 文件才能与用户集群进行互动。

如果您之前未验证配置文件,请勿使用 --skip-validation-all 标志。

验证用户集群是否正在运行

验证用户集群是否正在运行:

kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]

其中 [USER_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

使用管理员集群控制层面节点的 kubeconfig 调试 F5 BIG-IP 问题

安装完成后,GKE On-Prem 会在管理员工作站的主目录中生成一个名为 internal-cluster-kubeconfig-debug 的 kubeconfig 文件。此 kubeconfig 文件与管理员集群的 kubeconfig 完全相同,只是它直接指向管理员集群的控制层面节点(该节点上运行着管理员控制层面)。您可以使用 internal-cluster-kubeconfig-debug 文件调试 F5 BIG-IP 问题。

gkectl check-config 验证失败:找不到 F5 BIG-IP 分区

表现

验证失败,因为找不到 F5 BIG-IP 分区(即使分区存在)。

潜在原因

F5 BIG-IP API 的问题可能会导致验证失败。

解决方法

尝试再次运行 gkectl check-config

gkectl prepare --validate-attestations 失败:无法验证版本证明

表现

如果使用可选的 --validate-attestations 标志运行 gkectl prepare,则系统会返回以下错误:

could not validate build attestation for gcr.io/gke-on-prem-release/.../...: VIOLATES_POLICY
潜在原因

受影响的映像可能没有证明。

解决方法

请按照创建管理员工作站中的说明,尝试重新下载并部署管理员工作站 OVA。如果问题仍然存在,请与 Google 联系以获取帮助。

使用引导集群的日志进行调试

在安装期间,GKE On-Prem 会创建临时引导集群。成功安装后,GKE On-Prem 会删除引导集群,留下您的管理员集群和用户集群。通常情况下,您无需与此集群进行交互。

如果在安装过程中出现问题,并且您确实向 gkectl create cluster 传递了 --cleanup-external-cluster=false,则使用引导集群的日志进行调试可能会有用。您可以找到 pod,然后获取其日志:

kubectl --kubeconfig /home/ubuntu/.kube/kind-config-gkectl get pods -n kube-system
kubectl --kubeconfig /home/ubuntu/.kube/kind-config-gkectl -n kube-system get logs [POD_NAME]

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