本页面介绍了如何排查和验证 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 层网络遥测数据。
如需了解详情,请参阅网络服务监控概览和网络服务监控指标参考。