排查环境联网问题

本页面介绍了如何排查和验证 Google Kubernetes Engine (GKE) 环境网络。它提供了相关说明,可用于检查集群内环境组件的健康状况、诊断流量身份验证和授权问题、验证证书颁发情况,以及检查指标和日志。

验证组件是否已安装且运行状况良好

Cloud Service Mesh Ambient 模式的集群内组件安装在 gke-managed-ambient 命名空间中。您可以使用以下命令查看所有相关 Pod 的状态:

kubectl get pods -n gke-managed-ambient

验证流量是否经过身份验证和授权

在Google Cloud 控制台中使用Logs Explorer,检查与相关连接对应的访问日志:

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"

访问日志会显示连接详细信息,包括身份验证和授权状态。

日志格式

字段 类型 说明
connection 结构体 连接信息。
connection.src_ip 字符串 连接的来源 IP。
connection.src_port 整数 连接的来源端口。
connection.dest_ip 字符串 连接的目标 IP。
connection.dest_port 整数 连接的目标端口。
connection.direction 字符串 连接方向:{ingress, egress}
src 结构体 来源的端点信息。
src.spiffe_id 字符串 Pod 的 SPIFFE 身份。如果 Pod 没有 SPIFFE 身份,则为空。
dst 结构体 目的地的端点信息。
dst.spiffe_id 字符串 Pod 的 SPIFFE 身份。如果 Pod 没有 SPIFFE 身份,则为空。
error_details 字符串 有关所发生错误的详细信息(如果未发生错误,则为 -)。
timestamp 字符串 观察到连接的时间(世界协调时间)。
tls_failure_reason 字符串 TLS 握手失败原因。null(如果连接不是 TLS)。

验证证书是否已成功颁发

使用以下命令检查集群中工作负载 Pod 的 CertificateSigningRequests 状态:

kubectl get csr

您应该会看到“已批准,已签发”条件,如下所示:

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 Observability 指标之外,Cloud Service Mesh 环境网络还与网络服务监控集成,以提供详细的第 4 层网络遥测数据。

如需了解详情,请参阅网络服务监控概览和网络服务监控指标参考。