排查常见问题
本页面介绍如何解决 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 网关且无法连接到集群,请尝试以下步骤:
获取集群的授权用户。
gcloud container azure clusters describe CLUSTER_NAME \ --format 'value(authorization.admin_users)'
将
CLUSTER_NAME
替换为您的集群名称。输出包括对集群具有管理员访问权限的用户名。例如:
{'username': 'administrator@example.com'}
获取当前使用 Google Cloud CLI 进行身份验证的用户名。
gcloud config get-value account
输出包括使用 Google Cloud CLI 进行身份验证的账号。如果
gcloud containers azure clusters describe
和gcloud 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 exec
、kubectl attach
和 kubectl 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
日志。
后续步骤
- 如果您需要其他帮助,请与 Cloud Customer Care 联系。