kubectl、helm 和 gcloud 命令的完整参考,请跳转至 诊断命令。
自动化诊断
在运行单独的命令之前,请先尝试使用捆绑的脚本:已知问题
terraform apply 失败:GCP API 未启用
症状google_project_service 启用它们,但 cloudresourcemanager.googleapis.com 必须预先启用,Terraform 才能启用其他 API。
修复
apply 后无法访问 GKE 集群 API 服务器
症状RUNNING 状态,然后增加 90 秒的缓冲时间。对于启动较慢的项目,冷启动 API 激活可能超出这个时间窗口。
修复: 等待 RUNNING 状态,然后重新运行:
GKE 节点未加入(状态为 NotReady)
症状:kubectl get nodes 显示没有节点或节点卡在 NotReady 状态。
原因: 节点池服务账户缺少 roles/container.nodeServiceAccount 角色,或者 VPC 防火墙规则阻止了节点与控制平面之间的通信。
修复
GKE Pod 无法连接 Cloud SQL(连接被拒绝)
症状: 后端日志显示对 Cloud SQL 私有 IP 的connection refused 或 no route to host 错误。
原因: 私有服务连接(VPC 对等互连)未建立,或者分配的 IP 范围太小。通常发生在网络模块运行之前未启用 servicenetworking.googleapis.com 的情况下。
修复
enable_private_service_connection = true 并重新应用:
Memorystore Redis 连接超时
症状: Pod 无法连接到 Redis。日志显示dial tcp: connection timed out 或 redis: connection refused。
原因: Memorystore 的 authorized_network 与 GKE 的 VPC 不匹配,或者 Redis 的私有 IP 所在的范围无法从 GKE 子网路由。
修复
cert-manager 颁发 Let’s Encrypt 证书失败
症状:kubectl get certificate -n langsmith 显示 READY=False。HTTP01 验证失败。
原因: DNS A 记录未指向 Envoy Gateway 的 IP,或者负载均衡器上的 80 端口被阻止。
修复
LangSmith Pod 无法访问 GCS 存储桶(访问被拒绝)
症状: 后端日志在写入 GCS 时显示AccessDeniedException: 403 Insufficient Permission 或 403 Forbidden。
原因:
- 在原生 GCS 模式(默认模式)下,通过 Workload Identity 绑定的 GCP 服务账户缺少存储桶的
roles/storage.objectAdmin角色,或者 Pod 的 Kubernetes ServiceAccount 缺少iam.gke.io/gcp-service-account注解。 - 在可选的 S3 兼容模式下,传递给 Helm 的 HMAC 凭据不正确,或者其服务账户缺少存储桶的
roles/storage.objectAdmin角色。
roles/storage.objectAdmin 角色。如果注解本身缺失,请应用下面 Workload Identity 部分中的修复方法。对于 S3 兼容模式,请在 Cloud Storage → Settings → Interoperability 下创建 HMAC 密钥;其服务账户也需要存储桶的 roles/storage.objectAdmin 角色。
Envoy Gateway Webhook 阻止 GKE 操作
症状caBundle 已过时。
修复
重新应用后 Envoy Gateway 外部 IP 发生变化
症状: Terraform 重新应用后,DNS 不再解析到正确的 IP,或者现有的防火墙允许列表停止工作。 原因: Envoy Gateway 的外部 IP 绑定到由 Terraform 管理的Gateway Kubernetes 资源。如果该资源被删除并重建(例如 terraform taint、强制替换的模块更改或 terraform destroy + 重新应用),GCP 会分配一个新的 IP。如果不预先分配静态区域 IP,就无法保留原始 IP。
预防措施
- 不要对
Gateway资源执行terraform taint或手动删除操作。 - 仅在完全拆除和重建时使用
make destroy+make apply。 - 在任何可能重建 Gateway 的操作之前,请记下当前的 IP。
terraform destroy 失败:启用了删除保护
症状gke_deletion_protection = true(默认)或 postgres_deletion_protection = true 阻止了 Terraform 销毁资源。
修复
Workload Identity 不工作(GCS 权限被拒绝)
症状langsmith-ksa 缺少 Workload Identity 注解
症状: 操作员生成的代理 Pod 无法启动或卡在 Pending 状态。日志显示权限错误或代理引导作业挂起。
原因: langsmith-ksa 由 LangSmith 操作员(而非 Helm)创建,它不会在命名空间删除或全新集群重建后保留。deploy.sh 会在部署后重新为其添加注解;如果之前的部署被中断,注解可能缺失。
诊断
Helm 发布卡在 pending-upgrade 状态
症状
helm upgrade 被中断(在 --wait 期间按下了 Ctrl+C)。Helm 锁定了该发布。
修复: deploy.sh 能检测到并自动恢复此状态。如果手动运行:
Secret Manager 访问被拒绝
症状secretmanager.googleapis.com 未启用,要么操作员账户缺少 roles/secretmanager.admin 角色。
修复
langsmith-postgres-credentials 或 langsmith-redis-credentials Secret 缺失
症状: 部署后 Pod 立即因数据库连接错误而崩溃,或者 kubectl get secrets -n langsmith 未列出 langsmith-postgres-credentials / langsmith-redis-credentials。
原因: 这些 Secret 由 k8s-bootstrap 模块创建。如果 terraform apply 未运行、中途失败或命名空间被带外删除,则会缺失。
修复
诊断命令
集群访问
Pod
TLS 和证书
Gateway 和负载均衡器
Helm
LangSmith 部署
Workload Identity 和 IAM
Secrets 和引导程序
快速健康检查
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

