주변 네트워크 문제 해결

이 페이지에서는 Google Kubernetes Engine (GKE) 앰비언트 네트워킹을 문제 해결하고 확인하는 방법을 보여줍니다. 클러스터 내 앰비언트 구성요소의 상태를 확인하고, 트래픽 인증 및 승인 문제를 진단하고, 인증서 발급을 확인하고, 측정항목과 로그를 검사하는 방법을 안내합니다.

구성요소가 설치되어 있고 정상인지 확인

Cloud Service Mesh 대기 모드의 클러스터 내 구성요소는 gke-managed-ambient 네임스페이스에 설치됩니다. 다음 명령어를 사용하여 관련 포드의 상태를 모두 확인할 수 있습니다.

kubectl get pods -n gke-managed-ambient

트래픽이 인증되고 승인되었는지 확인

Google Cloud 콘솔에서 로그 탐색기를 사용하여 관심 있는 연결에 해당하는 액세스 로그를 확인합니다.

resource.type="k8s_container"
resource.labels.location="CLUSTER_LOCATION"
resource.labels.cluster_name="CLUSTER_NAME"
logName="projects/PROJECT_ID/logs/gke-ambient-node-proxy-accesslog"

액세스 로그에는 인증 및 승인 상태를 비롯한 연결 세부정보가 표시됩니다.

로그 형식

액세스 로그 항목의 jsonPayload에는 다음 필드가 있습니다.

필드 유형 설명
connection 구조체 연결 정보입니다.
connection.src_ip 문자열 연결의 소스 IP입니다.
connection.src_port int 연결의 소스 포트입니다.
connection.dest_ip 문자열 연결의 대상 IP입니다.
connection.dest_port int 연결의 대상 포트입니다.
connection.direction 문자열 연결 방향: {ingress, egress}
src 구조체 소스의 엔드포인트 정보입니다.
src.spiffe_id 문자열 포드의 SPIFFE ID입니다. 포드에 SPIFFE ID가 없는 경우 비어 있습니다.
dst 구조체 대상 엔드포인트 정보입니다.
dst.spiffe_id 문자열 포드의 SPIFFE ID입니다. 포드에 SPIFFE ID가 없으면 비어 있습니다.
error_details 문자열 발생한 오류에 관한 세부정보입니다 (오류가 발생하지 않은 경우 -).
timestamp 문자열 연결이 관찰된 시간 (UTC)입니다.
tls_failure_reason 문자열 TLS 핸드셰이크 실패 이유입니다. -: 연결이 TLS가 아닌 경우

인증서가 발급되었는지 확인

다음 명령어를 사용하여 클러스터의 워크로드 포드에 대한 CertificateSigningRequests 상태를 검사합니다.

kubectl get csr

다음과 유사한 'Approved,Issued' 조건이 표시됩니다.

NAME                           AGE   SIGNERNAME                 CONDITION
gke-ambient-spiffe-csr-q8kqh   2s    spiffe.gke.io/fleet-svid   Approved,Issued
gke-ambient-spiffe-csr-t5px2   7s    spiffe.gke.io/fleet-svid   Approved,Issued

네트워크 서비스 모니터링 측정항목

Cloud Service Mesh 앰비언트 네트워킹은 표준 Cloud Observability 측정항목 외에도 Network Services Monitoring과 통합되어 상세한 레이어 4 네트워크 원격 분석을 제공합니다.

자세한 내용은 네트워크 서비스 모니터링 개요 및 네트워크 서비스 모니터링 측정항목 참조를 참고하세요.