gcpdiag
ツールを使用する
gcpdiag
はオープンソースのツールです。正式にサポートされている Google Cloud プロダクトではありません。
gcpdiag
ツールを使用すると、Google Cloud プロジェクトの問題を特定して修正できます。詳細については、GitHub の gcpdiag プロジェクトをご確認ください。
gcpdiag
ツールは、次のチェックを実行して、Dataproc クラスタ作成に関する次の問題を検出するのに役立ちます。
- 在庫切れエラー: ログ エクスプローラのログを評価して、リージョンとゾーンでの在庫切れを検出します。
- 不十分な割り当て: Dataproc クラスタ プロジェクトの割り当てが使用可能かどうかを確認します。
- 不完全なネットワーク構成: 必要なファイアウォール ルールと、外部および内部 IP の構成の確認など、ネットワーク接続テストを行います。クラスタが削除された場合、
gcpdiag
ツールはネットワーク接続チェックを実行できません。 - プロジェクト間の構成が正しくない: プロジェクト間のサービス アカウントを確認し、追加のロールと組織のポリシーの適用を確認します。
- 共有 VPC の IAM ロールがない: Dataproc クラスタが共有 VPC ネットワークを使用している場合は、必要なサービス アカウントのロールが追加されているかどうかを確認します。
- 初期化アクションの失敗: ログ エクスプローラのログを評価して、初期化アクション スクリプトの失敗とタイムアウトを検出します。
gcpdiag
クラスタ作成手順の一覧については、考えられる手順をご覧ください。
gcpdiag
コマンドを実行する
gcpdiag
コマンドは、Google Cloud コンソールの Cloud Shell から、または Docker コンテナ内で実行できます。
Google Cloud コンソール
- 次のコマンドを入力してコピーします。
- Google Cloud コンソールを開き、Cloud Shell をアクティブにします。 Cloud コンソールを開く
- コピーしたコマンドを貼り付けます。
gcpdiag
コマンドを実行します。gcpdiag
Docker イメージがダウンロードされ、診断チェックが実行されます。該当する場合は、出力指示に従って失敗したチェックを修正します。
gcpdiag runbook dataproc/cluster-creation \
--project=PROJECT_ID \
--parameter cluster_name=CLUSTER_NAME \
--parameter OPTIONAL_FLAGS
Docker
Docker コンテナで gcpdiag
を起動するラッパーを使用して gcpdiag
を実行できます。Docker または Podman がインストールされている必要があります。
- ローカル ワークステーションで次のコマンドをコピーして実行します。
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
-
gcpdiag
コマンドを実行します。./gcpdiag runbook dataproc/cluster-creation \ --project=PROJECT_ID \ --parameter cluster_name=CLUSTER_NAME \ --parameter OPTIONAL_FLAGS
このランブックで使用可能なパラメータを表示します。
以下を置き換えます。
- PROJECT_ID: リソースを含むプロジェクトの ID
- CLUSTER_NAME: プロジェクト内のターゲット Dataproc クラスタの名前
- OPTIONAL_PARAMETERS: 次のオプション パラメータを 1 つ以上追加します。これらのパラメータは、クラスタが削除された場合に必要です。
cluster_uuid
: プロジェクト内のターゲット Dataproc クラスタの UUIDservice_account
: Dataproc クラスタの VM サービス アカウントsubnetwork
: Dataproc クラスタ サブネットワークのフル URI パスinternal_ip_only
: 正/誤cross_project
: Dataproc クラスタが別のプロジェクトの VM サービス アカウントを使用している場合、プロジェクト間の ID
有用なフラグ:
--project
: PROJECT_ID--universe-domain
: 該当する場合、リソースをホストする信頼できるパートナーのソブリン クラウド ドメイン--parameter
または-p
: ランブック パラメータ
すべての gcpdiag
ツールのフラグの一覧と説明については、gcpdiag
の使用手順をご覧ください。
クラスタ作成エラーを理解して修正する
このセクションでは、Dataproc のエラー メッセージとその一般的な原因、解決策を記載します。
オペレーション タイムアウト: 最低 2 つ必要な実行中のデータノード / ノード マネージャーが 0 個です
原因: マスターノードが、ワーカーノードと通信できないためクラスタを作成できない。
解決方法:
- ファイアウォール ルールの警告を確認します。
- 正しいファイアウォール ルールが設定されていることを確認します。詳細については、デフォルトの Dataproc ファイアウォール ルールの概要をご覧ください。
- Google Cloud コンソールで接続テストを実行して、マスターノードとワーカーノード間の通信をブロックしているものを特定します
projects/{projectId}/regions/{region}/subnetworks/{subnetwork}
に対してcompute.subnetworks.use
権限が必要原因: このエラーは、別のプロジェクトの VPC ネットワークを使用して Dataproc クラスタを設定する際、ネットワークをホストする共有 VPC プロジェクトの Dataproc サービス エージェント サービス アカウントに必要な権限がない場合に発生します。
解決策: 別のプロジェクトで 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 にリリース ファイルがない
原因: Debian の旧安定版のバックポート リポジトリが完全に削除された。
解決方法:
初期化スクリプトで、
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 ネットワークに、必要なインターネットへのルートがない可能性があります。クラスタ VM で実行されている Dataproc エージェントから Dataproc Control API にアクセスしてジョブを取得し、ステータスを報告するには、インターネットへのルートが必要です。インターネットへのシステム生成のデフォルト ルートが削除された可能性があります。
解決方法:
--next-hop-gateway=default-internet-gateway
を指定して、インターネットへのルートをクラスタ VPC ネットワークに追加します(IPv4 の場合は0.0.0.0/0
、IPv6 の場合は::/0
)。アクセス制御用のファイアウォール ルールを追加します。