gcpdiag
ツールを使用する
gcpdiag
はオープンソース ツールです。正式にサポートされている Google Cloud プロダクトではありません。
gcpdiag
ツールを使用すると、Google Cloud プロジェクトの問題を特定して修正できます。詳細については、GitHub の gcpdiag プロジェクトをご確認ください。
gcpdiag
ツールは、次のチェックを実行して、次の Dataproc クラスタ作成の問題を検出します。
- 在庫切れエラー: ログ エクスプローラのログを評価して、リージョンとゾーンの在庫切れを確認します。
- 不十分な割り当て: Dataproc クラスタ プロジェクトの割り当てが使用可能かどうかを確認します。
- ネットワーク構成が不完全: 必要なファイアウォール ルールのチェック、外部 IP と内部 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 \
--parameter project_id=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 \ --parameter project_id=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
有用なフラグ:
--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
)。アクセス制御用のファイアウォール ルールを追加します。