Kf インストール時の障害
Error from server (Bad Request): Invalid character
このエラーが構成のデフォルトを設定するときに表示された場合は、コマンドで使用されている ${DOMAIN}
環境変数の値にエスケープされた「$」が含まれている可能性があります。シングル クォーテションを使用して、スペース名など代わりとなるものでドメインを定義してください。
Error from server (BadRequest): invalid character '$' in string escape code
Kf Kubernetes オブジェクトに付随するエラー
以下の手順に沿って、Kf Kubernetes オブジェクトのトラブルシューティングを行います。
すべての Kf リソースを一覧表示して、トラブルシューティングする Kubernetes リソースタイプの名前を見つけます。
kubectl api-resources --api-group=kf.dev
出力例:
NAME SHORTNAMES APIGROUP NAMESPACED KIND apps kf.dev true App builds kf.dev true Build clusterservicebrokers kf.dev false ClusterServiceBroker routes kf.dev true Route servicebrokers kf.dev true ServiceBroker serviceinstancebindings kf.dev true ServiceInstanceBinding serviceinstances kf.dev true ServiceInstance spaces kf.dev false Space
kubectl
を使用して、トラブルシューティングするリソースのインスタンスを取得します。オブジェクトが Namespace にない場合は、-n
フラグを省略します。kubectl get api-resource-name.kf.dev object-name -n space-name -o yaml
次に例を示します。
kubectl get apps.kf.dev my-app -n my-space -o yaml
下のタブから問題を選択します。
オブジェクトの整合性の問題
metadata.generation
の値を確認します。この数は、オブジェクトが更新されるたびに増加します。この数が非常に大きい場合は、2 つの Kubernetes コントローラがそのオブジェクトを巡って争っていると考えられます。クラスタをチェックして、ポリシーがオブジェクトに適用されることによってあるべき状態から変化しているかどうかを確認します。- オブジェクトが属する Namespace が削除されているかどうかを確認します。削除されている場合は、オブジェクトが整合化されない可能性があります。
status.observedGeneration
フィールドが存在することを確認します。存在していない場合は、コントローラがオブジェクトに対してまだ実行されていない可能性があります。kf doctor
を使用して、クラスタとコントローラが正常であることを確認します。metadata.generation
フィールドがstatus.observedGeneration
フィールドと一致していることを確認します。一致していない場合は、kf doctor
を使用してクラスタとコントローラが正常な状態であることを確認します。- よくあるエラーの原因を示した次のリストに照らし合わせて、
status.conditions
リストの障害を確認します。
NotOwned
: クラスタまたは Namespace に、このオブジェクトが作成しようとしているリソースとは別のリソースが存在します。メッセージを読んで重複している名前を探し、競合しているリソースや Kf オブジェクトの名前を変更します。TemplateError
: Kf リソース仕様または Kf 構成に構成の間違いがあり、子リソースが間違った形に整合化されました。Kf オブジェクトと Kf スペースの設定を確認します。CacheOutdated
: Kf コントローラが Kubernetes からのアップデートを十分な早さで受信していません。Kubernetes クラスタの状態を確認します。ReconciliationError
: Kf コントローラが、必要な子リソースを作成できません。クラスタが正常な状態であり、Kf が実行中であること、メッセージで参照されるオブジェクトを Kf で作成できなくなるポリシーが適用されていないことを確認します。
オブジェクトの削除の問題
- オブジェクトの
metadata.deletionTimestamp
が設定されていることを確認します。設定されていない場合、リクエストされた削除は機能しません。 - オブジェクトの
metadata.deletionTimestamp
が過去を示していることを確認します。未来を示している場合は、オブジェクトが削除されない可能性があります。 - オブジェクトに
metadata.finalizers
リストが存在するかどうかを確認します。ファイナライザが存在する場合、オブジェクトは、ファイナライザが削除されるのを待った後、オブジェクト自身が削除されます。ファイナライザを待たずに削除を強制する場合は、オブジェクトを編集してファイナライザを削除します。 - オブジェクトの削除を妨げる子オブジェクトが存在する場合があります。Namespace とクラスタ内のすべてのオブジェクトを確認して、いずれかのオブジェクトを最初に手動で削除する必要があるかどうかを確認するよう管理者に依頼してください。