解决配置问题
本部分介绍了常见的 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 |
我们在一个或多个配置中遇到了潜在问题。这些配置可能未被应用;即使已应用,也可能导致非预期行为。 | 如需详细了解如何诊断这些问题,请参阅配置验证错误部分。 |
MULTICLUSTER_SECRET_WARNING |
集群使用的是手动创建的 Istio 多集群 Secret,而不是使用声明式多集群 API 进行端点发现。 | 将多集群端点发现设置移至声明式实现。如需了解详情,请参阅多集群 Secret 页面。 |
配置验证错误
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"
}
]
}