为什么@google-cloud/profiler在GKE实例内运行时抛出permission_denied错误
GKE 部署 Node.js 应用接入 Cloud Profiler 报 permission_denied 错误的常见原因
- 工作负载身份配置异常:如果你的 GKE 集群开启了*工作负载身份(Workload Identity)*特性,节点默认的 Compute Engine 服务账号权限会被覆盖,此时即便配置了集群全局 scopes 也不会生效。你需要为 Pod 绑定的 Kubernetes 服务账号(KSA)关联对应谷歌云服务账号(GSA),并为该 GSA 授予
roles/cloudprofiler.agent角色。 - 节点默认服务账号权限不足:如果集群未开启工作负载身份,需要确认节点使用的默认 Compute Engine 服务账号是否被授予了
roles/cloudprofiler.agent角色,若该服务账号被修改过默认权限、移除了相关权限,就会触发权限拒绝报错。 - Cloud Profiler API 未启用:如果部署应用的谷歌云项目没有提前开启 Cloud Profiler API,即便权限配置正确也会返回权限类错误,可在谷歌云控制台 API 和服务管理页确认该 API 处于启用状态。
- 目标项目配置不匹配:若你需要将性能数据上报到与 GKE 集群所属不同的谷歌云项目,需要在 Profiler 的
start()配置中显式指定projectId参数,同时确保使用的服务账号对目标项目具备 Profiler 数据写入权限。 - 节点池 scopes 配置未生效:如果是集群创建完成后才修改的 scopes 配置,原有节点池的配置不会自动更新,需要重建对应节点池,或单独修改指定节点池的 OAuth scopes 配置,确保包含
https://www.googleapis.com/auth/cloud-platform或https://www.googleapis.com/auth/monitoring.write权限。
内容的提问来源于stack exchange,提问作者Yannic Welle
相关产品推荐
相关产品推荐

