排查常见问题

本页面介绍如何解决 GKE on Azure 中的常见问题。

如果您需要其他帮助,请与 Cloud Customer Care 联系。

常见的错误消息

以下部分介绍了一些常见错误消息出现的原因及解决方法。

服务器没有资源

如果集群没有正在运行的节点池,或者 Connect 网关无法连接到节点池,则可能会发生 error: the server doesn't have a resource type "services" 等错误。如需检查节点池的状态,请运行以下命令:

gcloud container azure node-pools list \
    --cluster-name CLUSTER_NAME \
    --location LOCATION

替换以下内容:

  • CLUSTER_NAME:您的集群的名称
  • LOCATION:托管集群的 Google Cloud 位置

输出包含集群的节点池的状态。如果未列出任何节点池,请创建节点池

用户被禁止

如果您的用户名没有集群的管理员访问权限,则会发生以下错误:

Error from server (Forbidden): users "administrator@example.com" is forbidden:
User "system:serviceaccount:gke-connect:connect-agent-sa" cannot impersonate
resource "users" in API group "" at the cluster scope

如需配置其他用户,您可以在创建集群时传递 --admin-users 标志。

如果您使用 Connect 网关且无法连接到集群,请尝试以下步骤:

  1. 获取集群的授权用户。

    gcloud container azure clusters describe CLUSTER_NAME \
        --format 'value(authorization.admin_users)'
    

    CLUSTER_NAME 替换为您的集群名称。

    输出包括对集群具有管理员访问权限的用户名。例如:

    {'username': 'administrator@example.com'}
    
  2. 获取当前使用 Google Cloud CLI 进行身份验证的用户名。

    gcloud config get-value account
    

    输出包括使用 Google Cloud CLI 进行身份验证的账号。如果 gcloud containers azure clusters describegcloud config get-value account 的输出不匹配,请运行 gcloud auth login 并以对集群具有管理员权限的用户名进行身份验证。

kubectl 命令存在问题

以下部分介绍如何解决 kubectl 命令无响应或失败的问题。

kubectl 命令停止响应

如果您的集群运行的 Kubernetes 版本低于 1.25 并且 kubectl 命令无响应或超时,最常见的原因是您尚未创建节点池。默认情况下,GKE on Azure 会生成 kubeconfig 文件,这些文件使用 Connect 网关作为互联网可访问端点。为此,gke-connect-agent Deployment 需要在集群上的节点池中运行。

如需详细了解诊断信息,请运行以下命令:

kubectl cluster-info -v=9

如果没有正在运行的节点池,您会看到对 connectgateway.googleapis.com 的请求失败,并显示 404 cannot find active connections for cluster 错误。

对于 Kubernetes 版本为 1.25 或更高版本的集群,gke-connect-agent 在控制平面上运行,并且不需要节点池。如果 kubectl 命令无响应,请使用 Cloud Logging 检查控制平面组件日志。

kubectl exec、attach 和 port-forward 命令失败

使用 Connect 网关时,kubectl execkubectl attachkubectl port-forward 命令可能会失败,并显示消息 error: unable to upgrade connection。在将 Connect 网关用作 Kubernetes API 服务器端点时,需要遵守此限制。

如需解决此问题,请使用 kubeconfig 来指定集群的专用端点。如需了解如何通过集群的专用端点访问集群,请参阅为 kubectl 配置集群访问权限

常规 kubectl 问题排查

如果您使用 Connect 网关,请注意以下几点:

  • 确保您已在 Google Cloud 项目中启用 Connect 网关:

    gcloud services enable connectgateway.googleapis.com
    
  • 对于 Kubernetes 版本低于 1.25 的集群,请确保您至少有一个 Linux 节点池正在运行,并且 gke-connect-agent 正在运行。 如需了解详情,请参阅排查集群连接问题

  • 对于 Kubernetes 版本为 1.25 或更高版本的集群,请使用 Cloud Logging 检查 gke-connect-agent 日志。

后续步骤