구성 문제 해결
이 섹션에서는 일반적인 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"
}
]
}