排查集群创建问题

使用 gcpdiag 工具

gcpdiag 是一种开源工具。它不是官方支持的 Google Cloud 产品。 您可以使用 gcpdiag 工具来帮助识别和修复 Google Cloud 项目问题。有关详情,请参阅 GitHub 上的 gcpdiag 项目

gcpdiag 工具可帮助您发现以下 Dataproc 排查集群创建问题:

  • 缺货错误:评估 Logs Explorer 日志,以发现以下区域中的缺货情况 区域和可用区
  • 配额不足:检查 Dataproc 中的配额可用性 集群项目。
  • 网络配置不完整:执行网络连接测试。 包括检查必要的防火墙规则以及外部和内部 IP 配置。如果集群已被删除,则 gcpdiag 工具无法 执行网络连接检查。
  • 跨项目配置不正确:检查跨项目服务 账号,并审核其他角色和组织政策的执行情况。
  • 缺少共享 VPC IAM 角色:如果 Dataproc 集群使用 共享 VPC 网络,检查是否添加所需服务 账号角色。
  • 初始化操作失败:评估 Logs Explorer 日志来发现初始化操作脚本的失败和超时。

如需查看 gcpdiag 个集群创建步骤的列表,请参阅 可能的步骤

运行 gcpdiag 命令

您可以在以下位置通过 Cloud Shell 运行 gcpdiag 命令: Google Cloud 控制台或 Docker 容器中。

Google Cloud 控制台

  1. 完成,然后复制以下命令。
  2. gcpdiag runbook dataproc/cluster-creation \
      --project=PROJECT_ID \
      --parameter cluster_name=CLUSTER_NAME \
      --parameter OPTIONAL_FLAGS
  3. 打开 Google Cloud 控制台并激活 Cloud Shell。
  4. 打开 Cloud 控制台
  5. 粘贴复制的命令。
  6. 运行 gcpdiag 命令,该命令会下载 gcpdiag Docker 映像。 然后执行诊断检查。如果适用,请按照输出说明操作 修复未通过的检查。

Docker

您可以 gcpdiag使用封装gcpdiag Docker 容器。Docker 或 必须安装 Podman

  1. 复制以下命令并在本地工作站上运行。
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. 执行 gcpdiag 命令。
    ./gcpdiag runbook dataproc/cluster-creation \
      --project=PROJECT_ID \
      --parameter cluster_name=CLUSTER_NAME \
      --parameter OPTIONAL_FLAGS

查看此 Runbook 的可用参数

替换以下内容:

  • PROJECT_ID:包含资源的项目的 ID
    • CLUSTER_NAME:目标的名称 项目中的 Dataproc 集群
    • OPTIONAL_PARAMETERS:添加一个或多个 以下可选参数。如果需要执行上述操作, 集群已被删除
      • cluster_uuid:目标 Dataproc 的 UUID 集群
      • service_account:Dataproc 集群 虚拟机服务账号
      • subnetwork:Dataproc 集群子网 完整 URI 路径
      • internal_ip_only:True 或 False
      • cross_project:跨项目 ID(如果 Dataproc 集群使用虚拟机服务账号 在其他项目中

实用标志:

如需查看所有 gcpdiag 工具标志的列表和说明,请参阅 gcpdiag 使用说明

了解并修复集群创建错误

本部分列出了 Dataproc 错误消息及其常见原因 和解决方案。

  • 操作超时:在至少 2 个必需 datanode/节点管理器中,只有 0 个正在运行。

    原因:主节点无法创建集群,因为它不能与工作器节点通信。

    解决方案:

  • projects/{projectId}/regions/{region}/subnetworks/{subnetwork}”所需的 compute.subnetworks.use 权限

    原因:当您尝试设置 Dataproc 时,可能会发生此错误 另一个项目中的 VPC 网络与 Dataproc 服务代理 服务账号对共享 VPC 没有必要的权限 托管该网络的项目

    解决方案:按照创建使用另一个项目中的 VPC 网络的集群中列出的步骤。

  • 可用区“projects/zones/{zone}”没有足够的资源来处理请求“(resource type:compute)

    原因:用于创建集群的可用区没有足够的资源。

    解决方案:

  • 已超出配额错误

    CPUS/CPUS_ALL_REGIONS 配额不足
    “DISKS_TOTAL_GB”不足配额
    “IN_USE_ADDRESSES”数量不足配额

    原因:您的 CPU磁盘IP 地址请求超出了您的可用配额。

    解决方案:从 Google Cloud 控制台

  • 初始化操作失败

    原因:创建集群期间提供的初始化操作安装失败。

    解决方案:

  • 未能初始化节点“{cluster-name}”:{component}

    原因:Dataproc 组件未能初始化。

    解决方案:请参阅:

  • 集群创建失败:IP 地址空间已用尽

    原因:预配请求的集群节点所需的 IP 地址空间为 不可用。

    解决方案:

    • 在其他子网或网络上创建集群。
    • 减少网络用量以释放 IP 地址空间。
    • 等待网络上有足够的 IP 空间。
  • 初始化脚本错误消息:代码库 REPO_NAME 不再有发布文件

    原因: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 Control API 来获取作业和报告状态。系统生成的默认路由 但互联网上的文件可能已被删除

    解决方案:

    将连接到互联网的路由添加到集群 VPC 网络: 0.0.0.0/0(适用于 IPv4)适用于 IPv6 的 ::/0--next-hop-gateway=default-internet-gateway。 添加防火墙规则以实现访问权限控制