本页面介绍了如何创建用户集群。
生成配置文件
要创建用户集群,您需要用户集群配置文件。如果您使用 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.controlPlaneVIP
和 loadBalancer.ingressVIP
的值。
将 loadBalancer.kind
设置为您在管理员集群配置文件中设置的值:"ManualLB"
、"F5BigIP"
"Seesaw"
。然后填写相应部分:manualLB
、f5BigIP
或 seesaw
。
proxy
如果将拥有用户集群节点的网络位于代理服务器后面,请填写 proxy
部分。
masterNode
请填写 masterNode
部分。
nodePools
请填写 nodePools
部分。
authentication
如果您要使用 OpenID Connect (OIDC) 对用户进行身份验证,请填写 authentication.oidc
部分。
如果要为用户集群的 vCenter 服务器提供额外的证书,请填写 authentication.sni
部分。
stackdriver
请填写 stackdriver
部分。
gkeConnect
请填写 gkeConnect
部分。
cloudRun
将 cloudRun.enabled
设置为 true
或 false
。
验证配置文件
填写用户集群配置文件后,请运行 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 共享集群信息。请参阅诊断集群问题。
默认日志记录行为
对于 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]
如需了解详情,请参阅问题排查。