バージョン 2.2

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

KF の実行時に発生する可能性があるさまざまな問題のトラブルシューティングを行う手順は、以下のとおりです。

Failures when installing Kf

Istio's IP is not ready

これは、Istio が外部 IP を取得するのに過剰に長い時間を要している場合に発生する可能性があります。数分待ってから Cloud Build の送信手順を再実行します。ただし、他の処理が行われている可能性もあります。

Error from server (Bad Request): Invalid character

このエラーが構成のデフォルトを設定するときに表示された場合は、コマンドで使用されている ${DOMAIN} 環境変数の値にエスケープされた $ が含まれている可能性があります。シングル クォーテション(')を使用して、スペース名やその他の置換を含むドメインを定義してください。

Error from server (BadRequest): invalid character '$' in string escape code

Errors with Kf Kubernetes objects

以下の手順に沿って、Kf Kubernetes オブジェクトのトラブルシューティングを行います。

  1. すべての 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
    
  2. kubectl を使用して、トラブルシューティングするリソースのインスタンスを取得します。オブジェクトが名前空間にない場合は、-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
    
  3. 以下のタブから問題を選択します。

    Object isn't reconciling

    1. metadata.generation の値を確認します。この数は、オブジェクトが更新されるたびに増加します。数が非常に大きい場合、2 つの Kubernetes コントローラがオブジェクトで競合している可能性があります。クラスタをチェックして、目的の状態から変更されている可能性があるオブジェクトにポリシーが適用されていないかどうか確認します。
    2. オブジェクトが属する名前空間が削除されているかどうかを確認します。削除されている場合は、オブジェクトが調整されない可能性があります。
    3. status.observedGeneration フィールドが存在することを確認します。存在しない場合は、コントローラがまだオブジェクトに対して実行されていない可能性があります。kf doctor を使用してクラスタとコントローラが正常であることを確認します。
    4. metadata.generation フィールドが status.observedGeneration フィールドと一致していることを確認します。一致していない場合は、kf doctor を使用してクラスタとコントローラが正常な状態であることを確認します。
    5. よくあるエラーの原因を示したこのリストに照らし合わせて、status.conditions リストで失敗を確認します。
    • NotOwned: クラスタまたは名前空間に、このオブジェクトが作成しようとしているリソースとは別のリソースが存在します。メッセージを読んで重複している名前を探し、競合しているリソースまたは Kf オブジェクトの名前を変更します。
    • TemplateError: Kf リソース仕様または Kf 構成に構成ミスがあり、子リソースが正しく調整されません。Kf オブジェクトと Kf スペースの設定を確認します。
    • CacheOutdated: Kf コントローラが Kubernetes からの更新を十分な速度で受信していません。Kubernetes クラスタの状態を確認します。
    • ReconciliationError: Kf コントローラが、必要な子リソースを作成できません。クラスタが正常な状態であり、Kf が実行中であること、メッセージで参照されるオブジェクトを Kf で作成できなくなるポリシーが適用されていないことを確認します。

    Object isn't deleting

    1. オブジェクトの metadata.deletionTimestamp が設定されていることを確認します。設定されていない場合、リクエストした削除は機能しません。
    2. オブジェクトの metadata.deletionTimestamp が過去のものであることを確認します。将来の時点のものである場合は、オブジェクトが削除されない可能性があります。
    3. オブジェクトに metadata.finalizers リストが存在するかどうかを確認します。ファイナライザが存在する場合は、オブジェクトが削除される前にファイナライザが削除されるのをオブジェクトが待機する必要があります。ファイナライザを待たずに削除を強制する場合は、オブジェクトを編集してファイナライザを削除します。
    4. オブジェクトの削除を妨げる子オブジェクトが存在する場合があります。名前空間とクラスタ内のすべてのオブジェクトを確認して、いずれかのオブジェクトを最初に手動で削除する必要があるかどうかを確認するよう管理者に依頼してください。