问题排查

为什么我在添加端点时收到 not found 错误?

如果您在添加服务或端点时收到 404 错误,请确保您先创建了命名空间和服务(按此顺序),然后再添加端点。您必须先创建服务,然后才能添加其他端点。

为什么我在查询服务时没有看到任何端点?

确保请求中的项目、区域、命名空间名称和服务名称均正确无误,并且与您注册端点的位置一致。所有 Service Directory 服务都位于区域命名空间中,因此在一个区域注册的服务与另一个区域中的数据不匹配。

我向某人授予了某项服务的访问权限,但对方仍会收到 permission denied

这可能有几个原因。首先,请检查地区是否正确。 如果您对某个命名空间或服务设置了政策,该政策仅适用于该特定区域。如果用户尝试在其他区域注册或查找同一服务,除非您还向他们授予对该区域性服务的 IAM 访问权限,否则他们将无权访问。如需调试访问问题,请尝试针对服务和命名空间使用 TestIamPermissions 方法。

我添加了一些端点,然后移除了服务后端。为什么端点仍然存在?

Service Directory 不会执行自动健康检查或心跳,也不会移除端点,除非您明确移除端点。请务必向服务后端/编排器添加代码,以便在端点不再存在时从 Service Directory 中移除该端点。我们建议您在端点上使用有效期注解字段,以记录端点的上次注册或更新时间。

我可以查找端点,但每次尝试连接到这些端点时都会失败。

Service Directory 无法确保从客户端可达服务。服务会直接向 Service Directory 注册其端点。不过,向 Service Directory 注册的地址可能无法路由(尤其是当客户端和服务器位于不同的专用网络中时)。如果端点可从客户端路由,则可能是端点运行状况不佳。请参阅以下问题。

如何为端点添加运行状况数据,以便客户端知道要连接到哪个端点?

使用客户端负载均衡时,我们建议服务后端偶尔更新端点上的注释字段,以便客户端据此决定连接到哪个后端。Service Directory 不会检查或评估这些数据。

我已创建一个命名空间。为什么我无法为其分配 Cloud DNS 专用区域?

确保您拥有该命名空间的 servicedirectory.namespaces.associatePrivateZone IAM 权限,因为此权限可让您创建关联的专用网域。默认情况下,Project Editor、Project Owner、Service Directory Admin 和 Service Directory Editor 角色具有此权限。

当我对服务执行 DNS 查询时,为什么没有收到任何端点?

可能的原因有很多,例如:

  1. 关联的命名空间已被删除。您可以通过对专用区域运行 get 命令来检查这一点。如果设置了 serviceDirectoryConfig.deletionTime,则关联的命名空间及其所有端点都已被删除。
  2. 确认您是从允许查询专用区域的网络发出请求。您可以在专用区域上运行 get 命令,找到网络列表。
  3. 该服务没有(有效的)端点。通过 Service Directory API 对服务运行 resolve 命令,确保服务不为空且至少有一个有效的端点 IP。DNS 支持仅适用于具有有效 IPv4 或 IPv6 IP 地址的端点。
  4. 请确保您查询的是正确的区域。例如,假设您创建了一个名为 example.com 的 Service Directory 区域,并且您还有另一个名为 billing.example.com 的(标准)专用区域。那么,对 billing.example.com 的任何 DNS 查询都会返回属于 billing.example.com 区域的资源记录,而不是与 example.com 关联的 Service Directory 命名空间中的 billing 服务。如需了解详情,请参阅域名解析顺序

为什么我的 GKE 服务无法同步到 Service Directory?

可能的原因有很多,例如:

  1. 确认您已在 GKE 集群中为要同步的命名空间部署了 ServiceDirectoryRegistrationPolicy。此外,请确认您尝试同步的服务与政策中的标签选择器相符。
  2. 已存在一个手动创建或使用其他集成创建的 Service Directory 命名空间,其名称与您尝试同步的 GKE 命名空间相同。您必须重命名或删除现有的 Service Directory 命名空间,以免发生冲突。
  3. 我们移除了您的 Service Directory 服务账号的权限。 确保 service-{PROJECT_NUMBER}@gcp-sa-servicedirectory.iam.gserviceaccount.com 具有 Service Directory Service Agent IAM 权限。如需详细了解 IAM,请参阅 IAM 文档

后续步骤