您正在查看旧版 GKE On-Prem 的文档。查看最新文档

GKE On-Prem 备忘单

本主题概述了在使用 GKE On-Prem 时调用的命令,目的是为了方便您进行操作,并为 GKE On-Prem 文档提供补充。

方括号内的标志是可选的。Placeholder variables 是可变的。

kubectl 命令

另请参阅 kubectl 备忘单

设置默认 kubeconfig 文件

export KUBECONFIG=[KUBECONFIG_PATH]

列出默认 kubeconfig 中的集群

kubectl get clusters

传入 --kubeconfig [KUBECONFIG_PATH] 以查看非默认 kubeconfig 中的集群。

列出默认 kubeconfig 中集群内的节点

kubectl get nodes

传入 --kubeconfig [KUBECONFIG_PATH] 以查看非默认 kubeconfig 中的集群。

列出所有命名空间中的所有容器

kubectl get pods --all-namespaces -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

gkectl 命令

另请参阅 gkectl 参考文档

使用 gkectl 诊断集群问题

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

生成 GKE On-Prem 配置文件

gkectl create-config [--config [PATH]]

验证配置文件

gkectl check-config --config [PATH]

将 GKE On-Prem 映像推送到 Docker 注册表,并初始化节点操作系统映像

gkectl prepare --config [CONFIG_FILE] [--validate-attestations]

创建集群

gkectl create cluster --config [CONFIG_FILE]

Google Cloud 服务帐号

创建服务帐号

gcloud iam service-accounts create [SERVICE_ACCOUNT_NAME] --project [PROJECT_ID]

将 IAM 角色授予服务帐号

gcloud projects add-iam-policy-binding \
    [PROJECT_ID] \
    --member="serviceAccount:[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com" \
    --role="[ROLE_NAME]"

为服务帐号创建私钥

gcloud iam service-accounts keys create [KEY_FILE_NAME] \
--iam-account [SERVICE_ACCOUNT_NAME]@[PROJECT-ID].iam.gserviceaccount.com \
--project [PROJECT_ID]

激活服务帐号并以该帐号的身份执行 gcloudgsutil 命令

gcloud auth activate-service-account --key-file=[SERVICE_ACCOUNT_KEY_FILE]

管理员工作站

通过 SSH 连接到管理员工作站

在包含 Terraform 配置文件的目录中:

ssh -i ~/.ssh/vsphere_workstation ubuntu@$(terraform output ip_address)

或者,如果您只想使用其地址:

ssh -i ~/.ssh/vsphere_workstation ubuntu@[IP_ADDRESS]

将文件复制到管理员工作站

scp -i ~./ssh/vsphere_workstation [SOURCE_PATH] ubuntu@$(terraform output ip_address)

默认日志记录行为

对于 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 标志。

在管理员集群中查找集群 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

集群

获取管理员集群节点的 IP 地址

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get nodes --output wide

获取用户集群节点的 IP 地址

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes --output wide

通过 SSH 连接到集群节点

请参阅使用 SSH 连接到集群节点

后续步骤