このページでは、一般的な問題とエラーのトラブルシューティング手順について説明します。
FAILED インスタンス
FAILED ステータスは、インスタンス データが失われたため、インスタンスを削除する必要があることを意味します。
FAILED 状態の Parallelstore インスタンスは、削除されるまで課金され続けます。
インスタンスの状態を取得するには、 インスタンスを管理する: インスタンスを取得するの手順に沿って操作します。
インスタンスを削除するには、 インスタンスを管理する: インスタンスを削除するをご覧ください。
dfuse マウントまたはネットワーク テスト中のタイムアウト
Parallelstore インスタンスのマウント時に dfuse -m コマンドがタイムアウトした場合、または self_test や daos health net-test などのネットワーク テストコマンドがタイムアウトした場合は、ネットワーク接続の問題が原因である可能性があります。
Parallelstore サーバーへの接続を確認するには、
self_test --use-daos-agent-env -r 1
テストで接続の問題が報告された場合は、次の 2 つの理由が考えられます。
セットアップ時に DAOS エージェントが誤ったネットワーク インターフェースを選択した可能性がある
リストの IP に到達できないネットワーク インターフェースを除外する必要がある場合があります。access_points
ifconfigを実行して、使用可能なネットワーク インターフェースを一覧表示します。出力例では、eth0、docker0、ens8、loなど、複数のネットワーク インターフェースが表示されます。daos_agent を停止します。
/etc/daos/daos_agent.ymlを編集して、不要なネットワーク インターフェースを除外します。exclude_fabric_ifaces行のコメント化解除して、値を更新します。含めるエントリは、状況によって異なります。次に例を示します。exclude_fabric_ifaces: ["docker0", "ens8", "lo"]daos_agent を再起動します。
インスタンスまたはクライアントの IP アドレスが内部 IP アドレスと競合している
Parallelstore インスタンスとクライアントは、172.17.0.0/16 サブネット範囲の IP アドレスを使用できません。詳細については、既知の問題 をご覧ください。
インスタンスに未使用の容量がある場合の ENOSPC
インスタンスで最小ストライピングまたはバランス ストライピング(デフォルト)を使用している場合、既存のファイルがインスタンスの容量をすべて使用していない場合でも、ENOSPC エラーが発生することがあります。これは、通常 8 GiB を超える大きなファイルを書き込む場合や、そのようなファイルを Cloud Storage からインポートする場合に発生する可能性があります。
最大ファイル ストライピングを使用すると、このようなエラーが発生する可能性を減らすことができます。
Google Kubernetes Engine のトラブルシューティング
次のセクションでは、一般的な問題とその解決手順について説明します。
ワークロード Pod の Transport endpoint is not connected
このエラーは、dfuse の終了が原因で発生します。ほとんどの場合、メモリ不足が原因で dfuse が終了しました。Pod アノテーション gke-parallelstore/[cpu-limit|memory-limit] を使用して、Parallelstore サイドカー コンテナにより多くのリソースを割り当てます。割り当てるメモリ容量がわからない場合は、
gke-parallelstore/memory-limit: "0" を設定して、サイドカーのメモリ制限を解除できます。これは Standard クラスタでのみ機能します。Autopilot クラスタでは、値 0 を使用してサイドカー コンテナのリソース上限とリクエストの設定を解除することはできません。サイドカー コンテナのリソース上限を明示的に大きく設定する必要があります。
アノテーションを変更したら、ワークロード Pod を再起動する必要があります。 実行中のワークロードにアノテーションを追加しても、リソース割り当ては動的に変更されません。
Pod イベントの警告
ワークロード Pod を起動できない場合は、Pod イベントを確認します。
kubectl describe pod POD_NAME -n NAMESPACE
一般的なエラーの解決策を次に示します。
CSI ドライバの有効化に関する問題
一般的な CSI ドライバの有効化エラーは次のとおりです。
MountVolume.MountDevice failed for volume "volume" : kubernetes.io/csi:
attacher.MountDevice failed to create newCsiDriverClient:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
MountVolume.SetUp failed for volume "volume" : kubernetes.io/csi:
mounter.SetUpAt failed to get CSI client:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
これらの警告は、CSI ドライバが有効になっていないか、実行されていないことを示します。
クラスタがスケーリング、更新、アップグレードされたばかりの場合、この警告は正常であり、一時的なものです。クラスタ オペレーション後、CSI ドライバ Pod が機能するまで数分かかります。
それ以外の場合は、クラスタで CSI ドライバが有効になっていることを確認します。詳細については、
CSI ドライバを有効にするをご覧ください。CSI が有効になっている場合、
各ノードには parallelstore-csi-node-id という名前の Pod が実行されています。
AttachVolume.Attach の失敗
Pod がノードにスケジュールされると、ボリュームがノードにアタッチされ、ノードマウントを使用している場合はマウンタ Pod が作成されます。
これはコントローラで発生し、attachdetach-controller の AttachVolume ステップが関係します。
| エラーコード | Pod イベントの警告 | ソリューション |
| InvalidArgument |
|
無効なマウント フラグが PersistentVolume または StorageClass に渡されました。 詳細については、サポートされている dfuse マウント オプション をご覧ください。 |
| NotFound |
|
Parallelstore インスタンスが存在しません。PersistentVolume の volumeHandle の形式が正しいことを確認してください。 |
MountVolume.MountDevice の失敗
ボリュームがノードにアタッチされると、ボリュームがノードにステージングされます。
これはノードで発生し、kubelet の MountVolume.MountDevice ステップが関係します。
| エラーコード | Pod イベントの警告 | ソリューション |
| FailedPrecondition |
|
通常、このエラーはマウンタ Pod が手動で削除されたことが原因で発生します。 PVC を使用しているすべてのワークロードを削除して、再デプロイします。 これにより、新しいマウンタ Pod が作成されます。 |
| DeadlineExceeded |
|
Parallelstore インスタンスに接続できません。VPC ネットワークとアクセス ポイントが正しく構成されていることを確認してください。 |
MountVolume.SetUp の失敗
ボリュームがノードにステージングされると、ボリュームがマウントされ、Pod のコンテナに提供されます。これはノードで発生し、kubelet の MountVolume.SetUp ステップが関係します。
Pod マウント
| エラーコード | Pod イベントの警告 | ソリューション |
| ResourceExhausted |
|
dfuse プロセスが終了しました。通常、これは
メモリ不足(OOM)が原因で発生します。
`gke-parallelstore/memory-limit` アノテーションを使用して、サイドカー コンテナのメモリ上限を増やすことを検討してください。
parallelstore-sidecar に割り当てるメモリ容量がわからない場合は、 |
| 中止 |
|
レート制限または既存のオペレーションが原因で、ボリュームのマウント オペレーションが中止されました。この警告は正常であり、一時的なものです。 |
| InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
StorageClass または PersistentVolume に無効な引数を指定した場合、エラーログには無効な引数を含むフィールドが示されます。動的プロビジョニングの場合は、 ストレージ クラスを確認します。静的プロビジョニングの場合は、 永続 ボリュームを確認します。 |
| FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = can not find the sidecar
container in Pod spec
|
Parallelstore サイドカー コンテナが挿入されませんでした。
gke-parallelstore/volumes: "true" Pod アノテーションが正しく設定されていることを確認します。
|
ノードマウント
| エラーコード | Pod イベントの警告 | ソリューション |
| 中止 |
|
レート制限または既存のオペレーションが原因で、ボリュームのマウント オペレーションが中止されました。この警告は正常であり、一時的なものです。 |
| InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
StorageClass または Persistent Volume に無効な引数を指定した場合、エラーログには無効な引数を含むフィールドが示されます。動的プロビジョニングの場合は、 ストレージ クラスを確認します。静的プロビジョニングの場合は、 永続 ボリュームを確認します。 |
| FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = mounter pod expected to exist but was not found
|
Parallelstore マウンタ Pod が存在しません。 マウンタ Pod が誤って削除された場合は、すべてのワークロードを再作成して 再作成を促します。 |
| DeadlineExceeded |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = DeadlineExceeded desc = timeout waiting for mounter pod gRPC server to become available
|
マウンタ Pod の gRPC サーバーが起動しませんでした。マウンタ Pod の ログでエラーを確認します。 |
VPC ネットワークのトラブルシューティング
サービス servicenetworking.googleapis.com のピアリングを追加する権限が拒否された
ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.
このエラーは、ユーザー アカウントに servicenetworking.services.addPeering IAM 権限がないことを意味します。
アカウントに次のいずれかのロールを追加する手順については、IAM を使用したアクセス制御をご覧ください。
roles/compute.networkAdminまたはroles/servicenetworking.networksAdmin
CreateConnection で割り振り範囲を変更できない
ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection.
このエラーは、異なる IP 範囲でこのネットワークに vpc-peering をすでに作成している場合に返されます。考えられる解決法は次の 2 つです。
既存の IP 範囲を置き換えます。
gcloud services vpc-peerings update \
--network=NETWORK_NAME \
--ranges=IP_RANGE_NAME \
--service=servicenetworking.googleapis.com \
--force
または、新しい IP 範囲を既存の接続に追加します。
ピアリングの既存の IP 範囲のリストを取得します。
EXISTING_RANGES=$( gcloud services vpc-peerings list \ --network=NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --format="value(reservedPeeringRanges.list())" )次に、新しい範囲をピアリングに追加します。
gcloud services vpc-peerings update \ --network=NETWORK_NAME \ --ranges=$EXISTING_RANGES,IP_RANGE_NAME \ --service=servicenetworking.googleapis.com
IP アドレス範囲が枯渇した
次の範囲が枯渇したエラーで、インスタンスの作成が失敗する可能性があります。
ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted
このエラー メッセージが表示された場合は、 VPC ガイドに沿って IP 範囲を再作成するか、既存の IP 範囲を拡張します。
Parallelstore インスタンスを再作成する場合は、IP 範囲を拡張するのではなく、再作成する必要があります。
Pod Disruption Budget が制限されているため、メンテナンスがブロックされた
コンソールに、Pod Disruption Budget(PDB)が 0 個の Pod エビクションを許可するように構成されているため、メンテナンスを続行できないことを示す次のエラー メッセージが表示されることがあります。 Google Cloud
GKE can't perform maintenance because the Pod Disruption Budget allows for 0 Pods evictions.
このエラー メッセージが表示された場合は、次の手順で問題のある Pod を特定します。
エラー メッセージをクリックして、エラー インサイト パネルを開きます。
[許可されない Pod Disruption Budget] セクションで Pod の名前を確認します。
Pod が
parallelstorecsi-mountの場合、このエラーは無視できます。メンテナンスは妨げられません。他の Pod の場合は、PDB を確認してください。