创建管理员集群

本页面介绍了如何创建管理员集群。

生成配置文件

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

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

gkectl create-config admin --config [OUTPUT_PATH]

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

填写配置文件

bundlePath

如果您使用了 gkeadm 创建管理员工作站,则此字段已填写。否则,请提供软件包文件的路径

vCenter

如果您使用了 gkeadm 创建管理员工作站,则此部分已填写。否则,请vCenter 下的字段提供值

network

确定您要集群节点获取其 IP 地址的方式。选项包括:

  • 从 DHCP 服务器获取。将 network.ipMode.type 设置为 "dhcp"

  • 从您提供的静态 IP 地址列表获取。将 network.ipMode.type 设置为 "static",并创建一个提供静态 IP 地址的主机配置文件

为“network.”部分中剩余的字段提供值。

loadBalancer

为管理员集群的 Kubernetes API 服务器预留一个 VIP 地址。为插件服务器预留另一个 VIP 地址。提供您的 VIP 地址作为 loadBalancer.controlPlaneVIPloadBalancer.addonsVIP 的值。

确定要使用的负载平衡类型。选项包括:

  • Seesaw 捆绑式负载平衡。将 loadBalancer.kind 设置为 "Seesaw",然后填写 loadBalancer.seesaw 部分。

  • 使用 F5 BIG-IP 进行集成的负载平衡。将 loadBalancer.kind 设置为 "F5BigIP",然后填写 f5BigIP 部分。

  • 手动负载平衡。将 loadBalancer.kind 设置为 "ManualLB",然后填写 manualLB 部分。

proxy

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

privateRegistry

确定要为 GKE On-Prem 组件保留容器映像的位置。选项包括:

  • gcr.io。请勿填写 privateRegistry 部分。

  • 您自己的私有 Docker 注册表。请填写 privateRegistry 部分。

gcrKeyPath

gcrKeyPath 设置为已列入许可名单的服务帐号的 JSON 密钥文件的路径。

stackdriver

请填写 stackdriver 部分。

cloudAuditLogging

如果您要将 Kubernetes 审核日志与 Cloud Audit Logs 集成,请填写 cloudAuditLogging 部分。

验证配置文件

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

gkectl check-config --config [CONFIG_PATH]

其中 [CONFIG_PATH] 是管理员集群配置文件的路径。

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

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

运行 gkectl prepare

运行 gkectl prepare 以初始化您的 vSphere 环境:

gkectl prepare --config [CONFIG_PATH]

创建管理员集群

创建管理员集群:

gkectl create admin --config [CONFIG_PATH]

其中 [CONFIG_PATH] 是管理员集群配置文件的路径。

gkectl create admin 命令会在当前目录中创建一个名为 kubeconfig 的 kubeconfig 文件。您稍后需要此 kubeconfig 文件才能与管理员集群进行交互。

验证管理员集群是否正在运行

验证管理员集群是否正在运行:

kubectl get nodes --kubeconfig [ADMIN_CLUSTER_KUBECONFIG]

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

使用管理员集群控制层面节点的 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]

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

后续步骤

创建用户集群