解决配置问题

本部分介绍常见的 Cloud Service Mesh 问题以及如何解决这些问题。如果您需要其他帮助,请参阅获取支持

检查 MembershipState

您可以随时运行以下命令,查看网格的最新状态:

gcloud container fleet mesh describe

输出类似于以下内容:

...
membershipSpecs:
  projects/project_id/locations/global/memberships/cluster:
    mesh:
      management: MANAGEMENT_AUTOMATIC
membershipStates:
  projects/project_id/locations/global/memberships/cluster:
    servicemesh:
      ...
      conditions:
        - code: CONFIG_VALIDATION_WARNING
          documentationLink: https://cloud.google.com/...
          details: Application of one or more configs has failed. Error details are shown on individual config resources. See documentation link for more detail.
          severity: WARNING
...

MembershipState 错误代码

如果 Cloud Service Mesh 向集群的 MembershipState 报告条件,则可能表示无法应用网格配置(例如 Istio 自定义资源)。以下错误代码说明详细介绍了如何解决这些错误。

错误代码 原因 解决方法
CONFIG_APPLY_INTERNAL_ERROR 由于内部错误,一个或多个配置未能应用。 请与客户服务团队联系。
QUOTA_EXCEEDED_* 由于资源已达到配额限制,因此无法应用一项或多项配置。 如需了解具体配额以及如何提高配额,请参阅配额
CONFIG_VALIDATION_ERROR 由于配置无效,一个或多个配置未能应用。 系统会将具体错误写入导致这些错误的配置。如需详细了解如何诊断这些问题,请参阅 配置验证错误部分。
CONFIG_VALIDATION_WARNING 我们在一个或多个配置中发现了潜在问题。这些更改可能尚未应用,即使已应用,也可能会导致意外行为。 如需详细了解如何诊断这些问题,请参阅 配置验证错误部分。

配置验证错误

CONFIG_VALIDATION_WARNING CONFIG_VALIDATION_ERROR 代码表示在网格配置(Istio 或 Kubernetes 自定义资源)中发现了问题,并且部分配置可能未正确应用。

许多针对每个资源的错误详细信息都会写入到相应的资源中。您可以使用以下命令查找无效配置并查看具体错误消息。(注意:这些仅适用于 Istio 资源,并且此处可能不会显示所有验证错误)。

for resource in serviceentries destinationrules virtualservices gateways peerauthentications authorizationpolicies requestauthentications sidecars telemetries envoyfilters;
  do kubectl get $resource --all-namespaces --output=json | \
   jq  '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "Accepted" and .status == "False")) | {"name": .metadata.name, "namespace": .metadata.namespace, "kind": .kind, "conditions": .status.conditions}';
done

输出类似于以下内容:

{
  "name": "demo-envoy-filter",
  "namespace": "default",
  "kind": "EnvoyFilter",
  "conditions": [
    {
      "lastTransitionTime": "2024-04-04T21:10:18.046975988Z",
      "message": "This API is not supported",
      "reason": "Invalid",
      "status": "False",
      "type": "Accepted"
    }
  ]
}