本页面介绍了如何创建管理员集群。
生成配置文件
如需创建管理员集群,您需要一个管理员集群配置文件。如果您使用 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.controlPlaneVIP
和 loadBalancer.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 共享集群信息。请参阅诊断集群问题。
默认日志记录行为
对于 gkectl
和 gkeadm
,使用默认日志记录设置便已足够:
-
默认情况下,日志条目的保存方式如下:
- 对于
gkectl
,默认日志文件为/home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log
,该文件与运行gkectl
的本地目录中的logs/gkectl-$(date).log
文件进行符号链接。 - 对于
gkeadm
,默认日志文件是运行gkeadm
的本地目录中的logs/gkeadm-$(date).log
。
- 对于
- 所有日志条目都会保存在日志文件中,即使它们不输出到终端(当
--alsologtostderr
为false
时)也是如此。 -v5
详细程度(默认)涵盖支持团队所需的所有日志条目。- 日志文件还包含已执行的命令和失败消息。
我们建议您在需要帮助时将日志文件发送给支持团队。
为日志文件指定非默认位置
要为 gkectl
日志文件指定非默认位置,请使用 --log_file
标志。您指定的日志文件不会与本地目录进行符号链接。
要为 gkeadm
日志文件指定非默认位置,请使用 --log_file
标志。
在管理员集群中查找 Cluster API 日志
如果虚拟机在管理员控制层面启动后无法启动,您可以通过在管理员集群中检查 Cluster API 控制器的日志来尝试进行调试:
在
kube-system
命名空间中找到 Cluster API 控制器 pod 的名称,其中 [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径:kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
打开 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]
如需了解详情,请参阅问题排查。