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

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

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

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

kubectl get builds.kf.dev -n SPACE_NAME BUILD_NAME -o yaml

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

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

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

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

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

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

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

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

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

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

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

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

kubectl get builds.kf.dev -n SPACE_NAME BUILD_NAME -o yaml

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

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

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

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

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

kubectl get builds.kf.dev -n SPACE_NAME BUILD_NAME -o yaml

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

kf doctor --space SPACE_NAME build/BUILD_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-spacekubectl 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