Kf ServiceInstances のトラブルシューティング

Kf ServiceInstances の使用時に発生する可能性のあるさまざまな問題のトラブルシューティングの手順について説明します。

オブジェクトが削除中のまま停止している

次のコマンドを実行してリソース情報を取得し、以下に示す原因を確認してください。

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI は、一部の問題を確認する際に有用です。

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
考えられる原因解決策
削除のタイムスタンプが将来の日付である。

クロックのずれにより、まだ metadata.deletionTimestamp の時刻になっていない可能性があります。数分待ってから、オブジェクトが削除されたかどうかを確認します。

ファイナライザがオブジェクトに存在する。

ファイナライザがオブジェクトに存在します。オブジェクトを削除する前に、コントローラによってファイナライザを削除する必要があります。なお、そのコントローラは削除するファイナライザを設定したものである必要があります。

ファイナライザを待たずに強制的に削除する場合は、オブジェクトを編集して metadata.finalizers 配列から削除します。

警告: コントローラによる処理の実施を許可せずにファイナライザを削除すると、エラー、セキュリティ問題、データの損失、リソースの孤立が発生する可能性があります。

依存するオブジェクトが存在する可能性がある。

オブジェクトは削除される前に、依存するオブジェクトが削除されるのを待機している可能性があります。詳細については、Kubernetes ガベージ コレクション ガイドをご覧ください。Namespace とクラスタ内のすべてのオブジェクトを確認して、それらのうちの一つが削除をブロックしていないか確認するよう管理者に依頼してください。

削除対象のオブジェクトに依存するオブジェクトを待つことなく削除を実施する必要がある場合は、カスケード フラグを --cascade=orphan に設定して kubectl delete を使用します。

オブジェクトの世代状態がずれている

次のコマンドを実行してリソース情報を取得し、以下に示す原因を確認してください。

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI は、一部の問題を確認する際に有用です。

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
考えられる原因解決策
オブジェクトに世代バージョンのずれがある。

このエラーは通常、Kf コントローラがオブジェクトの最新バージョンを読み取らなかった場合に発生します。多くの場合、Kubernetes レプリカの結果整合性がとれて自己修復されるため、ユーザーによる操作は必要ありません。

オブジェクトの調整に失敗した

次のコマンドを実行してリソース情報を取得し、以下に示す原因を確認してください。

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI は、一部の問題を確認する際に有用です。

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
考えられる原因解決策
オブジェクトに TemplateError がある。

このエラーは通常、ユーザーがカスタム リソースの仕様に無効なプロパティを入力した場合か、スペース / クラスタの構成が不適切な場合に発生します。

根本原因を把握するには、kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space コマンドを使用して、オブジェクトの status.conditions にある長いエラー メッセージを確認します。例: kubectl describe serviceinstance my-service -n my-space

オブジェクトに ChildNotOwned エラーがある(名前の競合)。

このエラーは通常、コントローラが作成しようとしているオブジェクトがすでに存在していることを意味します。これは、ユーザーが作成した K8s リソースと同じ名前のリソースをコントローラが作成しようとしている場合に発生しますが、ユーザーがリソースを削除した後、Kf コントローラがそのリソースを再作成しようとすると、より頻繁に発生します。子リソースがまだ残っている場合、その所有者は存在しなくなった古いリソースになります。

このエラーから復旧するには、影響を受けたリソースを削除してから、リソースを再作成することをおすすめします。オブジェクトを削除するには、Kf の削除コマンドか、kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE コマンドを使用します。例: kf delete-space my-space または kubectl delete space my-space

リソースを再作成するには、Kf コマンドを使用します。例: kf create-space my-space

オブジェクトに ReconciliationError がある。

このエラーは通常、Kf コントローラがリソースの作成または更新を行うために Kubernetes API サーバーに HTTP 呼び出しを行ったときに、なんらかの問題が発生したことを意味します。

根本原因を把握するには、kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space コマンドを使用して、オブジェクトの status.conditions にある長いエラー メッセージを確認します。例: kubectl describe serviceinstance my-service -n my-space

バッキング リソースの調整に失敗した

次のコマンドを実行してリソース情報を取得し、以下に示す原因を確認してください。

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

kf CLI は、一部の問題を確認する際に有用です。

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
考えられる原因解決策
バッキング リソースの DeprovisionFailed エラー。

このエラーは通常、バッキング リソース(外部 OSB サーバーでホストされた MySQL データベース)のプロビジョニングを解除できない場合に発生します。Kf では、依存リソースのプロビジョニングを安全に解除できるかどうか判断できません。

このエラーから復旧するには、コマンド kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space を使用して、オブジェクトの status.conditions にある詳細なエラー メッセージを確認することをおすすめします。例: kubectl describe servipropogatesceinstance my-service -n my-space

エラー メッセージを確認したら、管理者にバッキング リソースの確認と手動でのクリーンアップを依頼します。バッキング リソースを安全に解放できると判断したら、kubectl edit serviceinstance my-service -n my-space コマンドを使用して、オブジェクト仕様から Finalizer を手動で削除すれば、影響を受ける Kf リソースを正常に調整できます。