排查 Cloud Service Mesh GKE 服务网格部署问题

本指南介绍如何解决 Gateway API 服务网格部署的问题。

status 字段中的信息

所有 Gateway API 资源都有一个 status 字段,用于从控制器角度反映资源的状态。除了 status 字段之外,控制器还会将事件附加到 Gateway API 资源,以提供有关其在这些资源上的操作的信息。

例如,您可以使用以下命令来检查 TDMesh 的状态和事件:

kubectl describe tdmesh td-mesh

输出内容类似如下:

...
Status:
  Conditions:
    Last Transition Time:  1970-01-01T00:00:00Z
    Message:               Waiting for controller
    Reason:                NotReconciled
    Status:                False
    Type:                  Scheduled
Events:
...

上面的状态表示控制器尚未开始协调此特定网格。如果此状态持续超过 5 分钟且未附加任何事件,请参阅以下部分:控制器似乎未协调 TDMesh 资源,以进一步排查问题。

您可以使用类似的方法来调试与其他资源(例如 HTTPRouteTCPRoute 及其他路由资源)相关的问题。

通常,状态和事件可以表示一些潜在的问题。

控制器似乎未协调 TDMesh 资源

如需诊断该问题,请确认是否存在 gke-td GatewayClass

kubectl get gatewayclasses

输出应包含名为 gke-tdGatewayClass

NAME             CONTROLLER
gke-td           networking.gke.io/gateway

如果未返回具有该名称的 GatewayClass,请按照安装所需的自定义资源定义中的步骤确认是否在配置集群中安装了所有必需的 CRD,然后使用以下命令重新启用 Cloud Service Mesh Google Kubernetes Engine 服务网格的 Hub 功能:

  1. 停用该功能:

    gcloud container hub ingress disable
    
  2. 重新启用该功能:

    gcloud container hub ingress enable \
      --config-membership=/projects/PROJECT_ID/locations/global/memberships/gke-1