使用 gcpdiag
工具
gcpdiag
是一种开源工具,不是由官方提供支持的 Google Cloud 产品。您可以使用 gcpdiag
工具来帮助识别和修复 Google Cloud 项目问题。如需了解详情,请参阅 GitHub 上的 gcpdiag 项目。
gcpdiag
工具会执行以下检查,帮助您发现以下 Dataproc 集群创建问题:
- 缺货错误:评估 Logs Explorer 日志,以发现地区和区域中的缺货情况。
- 配额不足:检查 Dataproc 集群项目中的配额可用情况。
- 网络配置不完整:执行网络连接性测试,包括检查必要的防火墙规则以及外部和内部 IP 配置。如果集群已被删除,
gcpdiag
工具将无法执行网络连接性检查。 - 跨项目配置不正确:检查跨项目服务账号,并审核其他角色和组织政策的强制执行情况。
- 缺少共享 VPC IAM 角色:如果 Dataproc 集群使用共享 VPC 网络,请检查是否已添加所需的服务账号角色。
- 初始化操作失败:评估 Logs Explorer 日志,以发现初始化操作脚本失败和超时问题。
如需查看 gcpdiag
集群创建步骤的列表,请参阅可能的步骤。
运行 gcpdiag
命令
您可以在 Google Cloud 控制台的 Cloud Shell 中或 Docker 容器中运行 gcpdiag
命令。
Google Cloud 控制台
- 完成然后复制以下命令。
- 打开 Google Cloud 控制台并激活 Cloud Shell。 打开 Cloud 控制台
- 粘贴复制的命令。
- 运行
gcpdiag
命令以下载gcpdiag
Docker 映像,然后执行诊断检查。如果适用,请按照输出说明修复失败的检查。
gcpdiag runbook dataproc/cluster-creation \
--parameter project_id=PROJECT_ID \
--parameter cluster_name=CLUSTER_NAME \
--parameter OPTIONAL_FLAGS
Docker
您可以使用封装容器运行 gcpdiag
,以在 Docker 容器中启动 gcpdiag
。必须安装 Docker 或 Podman。
- 在本地工作站上复制并运行以下命令。
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- 执行
gcpdiag
命令:./gcpdiag runbook dataproc/cluster-creation \ --parameter project_id=PROJECT_ID \ --parameter cluster_name=CLUSTER_NAME \ --parameter OPTIONAL_FLAGS
查看此 Runbook 的可用参数。
替换以下内容:
- PROJECT_ID:资源所在项目的 ID
- CLUSTER_NAME:项目中目标 Dataproc 集群的名称
- OPTIONAL_PARAMETERS:添加以下一个或多个可选参数。如果集群已被删除,则必须提供这些参数。
cluster_uuid
:项目中目标 Dataproc 集群的 UUIDservice_account
:Dataproc 集群虚拟机服务账号subnetwork
:Dataproc 集群子网的完整 URI 路径internal_ip_only
:true 或 falsecross_project
:如果 Dataproc 集群使用其他项目中的虚拟机服务账号,则为跨项目 ID
实用标志:
--universe-domain
:如果适用,则为托管资源的可信合作伙伴主权云网域--parameter
或-p
:Runbook 参数
如需查看所有 gcpdiag
工具标志的列表和说明,请参阅 gcpdiag
使用说明。
了解并修复集群创建错误
本部分列出了 Dataproc 错误消息及其常见原因和解决方案。
操作超时:仅运行 2 个必需的数据节点/节点管理器中的 0 个。
原因:主节点无法创建集群,因为它不能与工作器节点通信。
解决方案:
- 检查防火墙规则警告。
- 确保正确的防火墙规则已到位。如需了解详情,请参阅默认 Dataproc 防火墙规则概览。
- 在 Google Cloud 控制台中执行连接测试,以确定阻塞主节点和工作器节点之间通信的内容。
projects/{projectId}/regions/{region}/subnetworks/{subnetwork}
所需的compute.subnetworks.use
权限原因:当您尝试使用另一个项目中的 VPC 网络设置 Dataproc 集群并且 Dataproc 服务代理服务账号对托管该网络的共享 VPC 项目没有必要的权限时,可能会发生此错误。
解决方案:按照创建使用另一个项目中的 VPC 网络的集群中列出的步骤。
可用区
projects/zones/{zone}
没有足够的资源来处理请求(resource type:compute)
原因:用于创建集群的可用区没有足够的资源。
解决方案:
- 在其他可用区中创建集群。
- 使用 Dataproc 自动选择可用区展示位置功能。
已超出配额错误
CPUS/CPUS_ALL_REGIONS 配额不足
“DISKS_TOTAL_GB”配额不足
“IN_USE_ADDRESSES”配额不足原因:您的 CPU、磁盘或 IP 地址请求超出了您的可用配额。
解决方案:通过 Google Cloud 控制台申请更多配额。
初始化操作失败
原因:创建集群期间提供的初始化操作安装失败。
解决方案:
- 请参阅初始化操作注意事项和指南。
- 检查输出日志。错误消息应提供 Cloud Storage 中日志的链接。
未能初始化节点“{cluster-name}”:{component}
原因:Dataproc 组件未能初始化。
解决方案:请参阅:
集群创建失败:IP 地址空间已用尽
原因:无法获取预配请求的集群节点所需的 IP 地址空间。
解决方案:
- 在其他子网或网络上创建集群。
- 减少网络使用量以释放 IP 地址空间。
- 等待网络上有足够的 IP 空间可用。
初始化脚本错误消息:代码库 REPO_NAME 不再包含“Release”文件
原因:Debian oldstable 向后移植代码库已被清除。
解决方案:
在初始化脚本中运行
apt-get
的代码之前添加以下代码。oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}'); stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}'); matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)" if [[ -n "$matched_files" ]]; then for filename in "$matched_files"; do grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \ sed -i -e 's/^.*-backports.*$//' "$filename" done fi
无法访问网络:dataproccontrol-REGION.googleapis.com/...*
原因:Dataproc 集群 VPC 网络可能没有必需的到互联网的路由。在集群虚拟机上运行的 Dataproc 代理需要有通往互联网的路线,才能访问 Dataproc 控制 API 以获取作业和报告状态。通向互联网的系统生成的默认路由可能已被删除。
解决方案:
将路由到互联网添加到集群 VPC 网络:使用
--next-hop-gateway=default-internet-gateway
添加 IPv4 的0.0.0.0/0
和 IPv6 的::/0
。添加用于访问控制的防火墙规则。